#c# #json #json.net
#c# #json #json.net
Вопрос:
У меня есть строка json следующего вида:
"{
"TotalAmount":{"XPos":"100","YPos":"750"},
"title":{"XPos":"250","YPos":"800"},
"ListSetting":{
"listId":"batchlist",
"listXPos":"30",
"listYPos":"700",
"listCols":"["seq","RemitType"]"
}
}"
Я хочу разобрать эту строку в словаре ключей как TotalAmount, title и ListSetting, но при выполнении DeserializeObject следующим образом возникает ошибка.
JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonStr);
An exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.dll but was not handled in user code
Additional information: After parsing a value an unexpected character was encountered: s. Path 'ListSetting.listCols', line 1, position 166.
Похоже, что «listCols» вызывает проблему, но я не знаю, как это исправить.
Кто-нибудь может помочь? Спасибо.
Комментарии:
1. Я пробовал Dictionary<string, строка> , но это приведет к сбою при {«XPos»: «100», «yPos»: «750»}. XPOS, listYPos и т.д. Являются согласованными.
2. Не могли бы вы, пожалуйста, показать классы c #, которые вы сериализовали?
3. @Yauhen Sampir Спасибо, я попытался изменить способ сериализации и, похоже, теперь все в порядке
4. Также вы можете проверить свой json в jsoneditoronline.org/?id=e726383419474d09aec762ce0de66a93 или другие подобные сервисы
5. @Евгений Сампир понял! Большое вам спасибо за помощь.
Ответ №1:
Удалите кавычки "
вокруг вашего listcols
массива, как "listCols":["seq","RemitType"]
в противном случае он вообще не обрабатывается как объект массива, и, очевидно, десериализация завершится неудачей
Комментарии:
1. Спасибо! Я попробовал другой метод сериализации JSON (чтобы убрать кавычки) и, похоже, это работает. Спасибо.