Json.NET: Deserilization with Double Quotes Json.NET: Deserilization with Double Quotes json json

Json.NET: Deserilization with Double Quotes


It looks like HttpUtility.JavaScriptStringEncode might solve your issue.

HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(yourObject))


Just do:

yourJsonString = yourJsonString.Replace("\"", "\\u022");object o = JSonConvert.Deserialize(yourJsonString);

\u022 is the ascii code for double quotes. So replacing quotes for \u022 will be recognized by your browser.

And use \ in "\u022" to make c# recognize backslash character.

Cheers


You can improving this.

    static private T CleanJson<T>(string jsonData)    {        var json = jsonData.Replace("\t", "").Replace("\r\n", "");        var loop = true;        do        {            try            {                var m = JsonConvert.DeserializeObject<T>(json);                loop = false;            }            catch (JsonReaderException ex)            {                var position = ex.LinePosition;                var invalidChar = json.Substring(position - 2, 2);                invalidChar = invalidChar.Replace("\"", "'");                json = $"{json.Substring(0, position -1)}{invalidChar}{json.Substring(position)}";            }        } while (loop);        return JsonConvert.DeserializeObject<T>(json);    }

Example;

var item = CleanJson<ModelItem>(jsonString);