У меня есть проблема с разбора следующие JSON объекта:Невозможно разобрать объект JSON с Newtonsoft.JSON
{
"SERVER1/DeviceIpint.3/SourceEndpoint.video:0:0" :
{
"origin" : "SERVER1/DeviceIpint.3/SourceEndpoint.video:0:0",
"state" : "connected",
"friendlyNameLong" : "Camera 3",
"friendlyNameShort" : "3"
},
"SERVER2/DeviceIpint.5/SourceEndpoint.video:0:0" :
{
"origin" : "SERVER2/DeviceIpint.5/SourceEndpoint.video:0:0",
"state" : "disconnected",
"friendlyNameLong" : "Camera 5",
"friendlyNameShort" : "5"
},
...
Насколько я знаю, это Сервер1 ..., Сервер2 ... не должно быть переменных, должен быть написан «сервер» или что-то в этом роде. Я использую Newtonsoft.JSON для анализа этих данных, но я не могу десериализовать его. Я всегда получаю нулевые значения. Например, это мой видеоисточника класс
private class VideoSource
{
public string origin { get; set; }
public string state { get; set; }
public string friendlyNameLong { get; set; }
public string friendlyNameShort { get; set; }
public override string ToString()
{
return origin;
}
}
и я пытаюсь разобрать его с помощью следующей функции:
private VideoSource ParseJsonToVideoSource(string obj)
{
dynamic source = JsonConvert.DeserializeObject(obj);
VideoSource s = new VideoSource();
s.origin = source.origin;
s.friendlyNameLong = source.friendlyNameLong;
s.friendlyNameShort = source.friendlyNameShort;
s.state = source.state;
return s;
}
Как я уже сказал, я получаю нулевые значения. Что не так?
JSON - это массив, а не один объект, вам нужно десериализовать его в список или массив. Вы пытались изменить 'dynamic' на' var' и посмотрели, что тип находится в отладчике? Я думаю, что 'DeserializeObject' возвращает объект, а не динамический объект. –
@RonBeyer Да, это массив. Как бы это разобрать? Когда я изменяю на 'var', он говорит, что это typeof' object'. Когда я пытаюсь десериализировать это следующим образом: 'var source = JsonConvert.DeserializeObject (obj);' Я получаю нулевые значения (конечно, потому что это массив значений). Я не знаю, что делать ... –
nighthawk
@RonBeyer: Это не массив. Нет скобок ('' и '' '). Это всего лишь один объект с несколькими свойствами, которые, в свою очередь, обладают собственными свойствами. –