Я немного знаком с JSON.net и могу Deserialize JSON с базовой структурой (до одного ребенка). Я в настоящее время в процессе десериализации JSON, который возвращается из Netatmo API. Структура JSON для меня сложна. Ниже приводится основная структура JSON,Deserializing JSON с детьми и внутренними детьми
_id
place
location
Dynamic Value 1
Dynamic Value2
altitude
timezone
mark
measures
Dynamic Value 1
res
Dynamic Value 1
Dynamic Value 1
Dynamic Value 2
type
Dynamic Value 1
Dynamic Value 2
modules
Dynamic Value 1
динамическое значение 1 и динамическое значение 2 означает, что значения изменяется для каждого идентификатора. Полный JSON приведен ниже,
{
"body": [{
"_id": "70:ee:50:02:b4:8c",
"place": {
"location": [-35.174779762001, -5.8918476117544],
"altitude": 52,
"timezone": "America\/Fortaleza"
},
"mark": 0,
"measures": {
"02:00:00:02:ba:2c": {
"res": {
"1464014579": [16.7, 77]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:02:b4:8c": {
"res": {
"1464014622": [1018.1]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:02:ba:2c"]
}, {
"_id": "70:ee:50:12:40:cc",
"place": {
"location": [-16.074257294385, 11.135715243973],
"altitude": 14,
"timezone": "Africa\/Bissau"
},
"mark": 14,
"measures": {
"02:00:00:06:7b:c8": {
"res": {
"1464015073": [26.6, 78]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:12:40:cc": {
"res": {
"1464015117": [997]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:06:7b:c8"]
}],
"status": "ok",
"time_exec": 0.010364055633545,
"time_server": 1464015560
}
Я смущен, глядя на сложную структуру этого JSON. Для одного уровня JSON я использовал этот код в прошлом,
IList<lstJsonAttributes> lstSearchResults = new List<lstJsonAttributes>();
foreach (JToken objResult in objResults) {
lstJsonAttributes objSearchResult = JsonConvert.DeserializeObject<lstJsonAttributes>(objResult.ToString());
lstSearchResults.Add(objSearchResult);
}
Но так много детей, я до сих пор понять, как будет создан объект класса. Любое руководство будет высоко оценено.
Обновление: Это то, чего я до сих пор добился.
Я создал основной класс, как показано ниже,
public class PublicDataClass
{
public string _id { get; set; }
public PublicData_Place place { get; set; }
public string mark { get; set; }
public List<string> modules { get; set; }
}
и класс «Место» как следует,
public class PublicData_Place
{
public List<string> location { get; set; }
public string altitude { get; set; }
public string timezone { get; set; }
}
Тогда я Десериализованный объект в следующей строке кода,
var obj = JsonConvert.DeserializeObject<List<PublicDataClass>>(jsonString);
Теперь я могу успешно получить все данные, кроме «мер», которые немного сложнее.
пачкой Спасибо за ваш ответ, и как вы объяснили это. Я медленно дошел до этого момента. Я использовал http://json2csharp.com/ для преобразования объектов JSON в C#. Он не успешно создал объект для измерений, но затем ссылался на другой пост на SO и преобразовал весь JSON в динамический объект. Он создал все и заполнил все данные. Я просто смотрел на объекты в окне QuickWatch и выяснил, что вложенные дочерние объекты для Measures создаются в виде словаря.Пользовательский тип гораздо проще работать с вложенными динамическими объектами. –
Я только что протестировал его, и это сработало без проблем. Еще раз спасибо. –