2015-02-19 2 views
2

Я использую Newtosoft.Json для разбора JSON, что вполне нормально в C# :)Newtosoft.Json Bad escape-последовательность JSON: v.

К сожалению, я получил строку JSON, как следующее разобрать:

{"data": {"str_1": "' \u001e\v \u0003\u001f"\u0003\u001d %\b)\v#"}} 

Вызов JObject.Parse(aboveLine) дает мне ошибку, как Bad JSON escape sequence: \v. Path 'data.str_1', line 1, position [number]. \v - знак вертикальной линии.

Есть ли способ, как я могу разобрать выше json без исключения?

+0

http://jsonlint.com/ – EZI

+0

@EZI Я не понимаю вашего комментария –

+0

Garath, я говорю, что это неправдоподобный json. Поэтому вы не можете разобрать его. это из какой-то службы спросите их. – EZI

ответ

2

Я проверил спецификацию, и я обнаружил, что '\ v' является действительным JSON. Спецификация доступна здесь: https://www.json.com/json-object#object-with-strings

Я также проверил исходный код и не поддерживает '\ v'. Именно поэтому я создал запрос нагрузочный который, я надеюсь, будут объединены в Newtonsoft.Json: https://github.com/JamesNK/Newtonsoft.Json/pull/489

Update

К сожалению для меня http://json.com НЕПРАВИЛЬНО и \v не является допустимым люфт символ в формате JSON. RFC 4627 определяет все из них и \v не в нем :( Я добавил комментарий об этом на http://json.com

Update 2

я описал эту историю в своем блоге со всеми деталями. Если вы заинтересованы только chek it out: http://stapp.space/bad-json-escape-sequence-v/

+0

Интересно. Согласно [json.org] (http://json.org/) и [ECMA JSON spec document] (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404. pdf) '\ v' недопустим в строках JSON. [RFC4627] (http://www.ietf.org/rfc/rfc4627.txt) также не имеет '\ v'. –

+0

Вы правы. Но я не понимаю, почему json.com разрешает '\ v' –

+0

Возможно, json.com не является официальной спецификацией. –

0

Используйте \u000B (вертикальная вкладка) вместо \v, и у вас будет действующий JSON.

\ V является знаком вертикальной линии

\u007C является вертикальной линией |

+0

Я не выпускаю JSON. Я знаю, что могу заменить его, но он не выглядит хорошо. –

Смежные вопросы