@IzeBerg

Откуда берется ошибка парсинга JSON ответа сервера?

Пишу серверо-клиентское приложение, запросы/ответы идут в JSON (люблю с ним работать :) ) , для парсинга ответа использую библиотеку Newtonsoft.Json так вот, например ответ сервера:
{
	"status": true,
	"location": "https://ru.wargaming.net/id/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%26janrain_nonce%3D2014-07-22T06%253A58%253A41ZepFnu1\"}d/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%26janrain_nonce%3D2014-07-22T06%253A58%253A41ZepFnu1\"}d/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%2"
}

Для удобства чтения отформатировал.

Так вот, при парсинге JObject'ом (функция JObject.Parse(json)) у меня вылетает исключение:
Необработанное исключение типа "Newtonsoft.Json.JsonReaderException" произошло в Newtonsoft.Json.dll

Дополнительные сведения: Additional text encountered after finished reading JSON content: \. Path '', line 1, position 1175.


Причем такое происходит в любых ответах сервера (содержимое которых сильно отличается), изменяется только позиция и "<какой-то символ>.Path".

В чем проблема? Я уже всячески обрабатывал строку как на сервере так и на клиенте, толку 0.
Причем странность: Ту-же строку (прямо из клиента выводом перед парсингом брал) например Notepad++ с плагином JSON Viewer спокойно парсит.

P.s. И да, на сервере JSON строка собирается тем-же JObject'ом.

UPD. Я покопался дебаггером, и обнаружил:
86c44ccec730483988606175bae34b02.png
Откуда ответ забивается "\0"?
  • Вопрос задан
  • 5553 просмотра
Пригласить эксперта
Ответы на вопрос 2
@SashaSkot
Специалист широкого профиля
5cc80ab23536415ca2722000ec742b41.PNG
Скорее всего парсер ваш криво обрабатывает строку, на картинке видно, что встречаются последовательность символов "}, которые смущают парсер, он воспринимает это как конец строковой константы и блока, что в корне неверно.
Ответ написан
@SZolotov
Asp.net core, MAUI,WPF,Qt, Avalonia
а десериализовать пробовали с помощью JsonConvert?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы