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);