Надежно исправьте неработающие escape-последовательности в JSON

#c# #json #json.net

#c# #json #json.net

Вопрос:

Я получаю некоторый JSON для внешнего источника, который нельзя изменить, и, по-видимому, они не понимают правил правильного экранирования символов в строковых значениях JSON. Таким образом, у них есть строковое значение, в котором могут быть вкладки, например, которые должны были быть экранированы, и другие недопустимые escape-последовательности, такие как $ . Я пытаюсь проанализировать это с помощью JSON.Net, но он продолжает падать на эти последовательности.

Например, исходный код может выглядеть примерно так:

 {
    "someRegularProp": 10,
    "aNormalString": "foo bar etc",
    "anInvalidString": "foo    <tab $100"
}
 

и он анализируется с

 var obj = JObject.Parse(json);
 

Итак, я могу исправить этот конкретный случай чем-то вроде:

 json = json.Replace("t", "").Replace("\$", "$");  // note: in this case I'm fine with just stripping the tabs out
 

Но есть ли общий способ исправить эти проблемы, чтобы удалить недопустимые escape-последовательности перед синтаксическим анализом? Потому что я не знаю, какие другие недопустимые последовательности они могут туда вставить?

Ответ №1:

Я не вижу общего способа. Очевидно, что они используют библиотеку с ошибками или вообще не используют библиотеку для генерации этого вывода, и если вы не изучите больше, все, что вы можете сделать, это попробовать как можно больше выходных данных из них, чтобы найти все проблемы.

Возможно, создайте скрипт для генерации как можно большего объема выходных данных и проверки всего этого, тогда вы сможете быть хотя бы немного увереннее.