не удается выполнить JsonConvert.DeserializeObject

#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 (чтобы убрать кавычки) и, похоже, это работает. Спасибо.