У меня была такая же проблема, и я нашел возможное решение. Идея состоит в том, чтобы поймать исключение JsonReaderException. Это исключение приносит вам атрибут «LinePosition». Вы можете заменить эту позицию на пустой символ (''). И затем, вы используете этот метод рекурсивно, пока весь json не будет исправлен.
Это мой пример:
private JToken processJsonString(string data, int failPosition)
{
string json = "";
var doubleQuote = "\"";
try
{
var jsonChars = data.ToCharArray();
if (jsonChars[failPosition - 1].ToString().Equals(doubleQuote))
{
jsonChars[failPosition - 1] = ' ';
}
json = new string(jsonChars);
return JToken.Parse(json);
}
catch(JsonReaderException jsonException)
{
return this.processJsonString(json, jsonException.LinePosition);
}
}
Надеюсь, вам понравится.