Ошибка Invalid Reverse Solidus '\' declaration при разборе json

283
20 апреля 2021, 12:00

Прошу помощи в разборе JSON.

Пытаюсь распарсить Yandex коллекции с обновляемой лентой, вот сам сайт: https://yandex.ru/collections/avto/

При анализе XHR удалось определить, что при листинге отправляются Get запросы, вот пример запроса:

https://yandex.ru/collections/api/user/feed?type=auto_and_moto&card_id.after=5a512d7f215a8400a1d672d0&seed=1563859591660-721538998082063&after=24&rec_flags=user_interface%3Ddesktop%3Bpreset%3Dcollections%3Bfrom%3Dcollections

Если пройти по ссылке то сгенерится JSON (по крайней мере на него похож). Собственно прошу помощи в его парсинге для возможности десериализации. Думал воспользоваться генератором классов http://json2csharp.com, но он его не скушал...

Поделитесь методикой разбора таких конструкций? Желательно на C#.

Answer 1

Посмотрел в браузере ваш json вручную:

Если вставить текст в vscode и нажать alt+shift+F - текст прекрасно форматируется, т.е. сам json валидный.

Дело и не в размере json - я попробовал проверить гипотезу "на сайте который вы привели большие файлы не анализируются, допустим стоит ограничение на длину POST запроса" и открыл в своём любимом анализаторе, делюсь ссылкой: https://app.quicktype.io/ -- и он совершенно спокойно открыл его.

Но! Выдал ошибку, которую я никогда не видел (спасибо за любопытный кейс, с которым не сталкивался):

Invalid Reverse Solidus '\' declaration.

Я погуглил, похоже это какая-то проблема (1, 2) у конкретного семейства парсеров - им не нравится unicode.

Окей, открываем любой редактор который поддерживает замену регекспами и заменяем \\u[\da-zA-Z]{4} на скажем букву Z.

Вуяля! Такой текст прекрасно анализируется -- выдаёт классы для десериализации.

READ ALSO
Entity FrameWork защита от SQL инъекций

Entity FrameWork защита от SQL инъекций

Начал изучать Entity FrameWork подNet MVC, реализую DB First-то бишь есть готовая база Mysql и с помощью EF создаю сущности DBContext и т

108
Как определить формат файла excel?

Как определить формат файла excel?

Если не вдаваться в подробности, попадаются файлыxlsx которые названы как

139
Конвертирование string в int c#

Конвертирование string в int c#

Есть стринговое значение:

112
Unity 2019.1 компиляция в apk

Unity 2019.1 компиляция в apk

Не компилируется в apk, ошибка CommandInvokationFailure: Gradle build failedРаньше решалось это в настройке Build System - надо было Gradle на Internal поменять, а теперь в новой...

127