Изменить Json или ExtensionDataObject
У меня есть служба Json, которую я не могу изменить, поскольку она не моя. Их Json отформатирован таким образом, что анализировать его сложно. Это выглядит примерно так.
"people": {
"Joe Bob": {
"name": "Joe Bob",
"id": "12345"
},
"Bob Smith": {
"name": "Bob Smith",
"id": "54321"
}
},
Я действительно предпочел бы, чтобы это было выложено как массив JSon, однако в настоящее время это не так. Мне интересно, лучший подход здесь. Должен ли я изменить Json, чтобы он выглядел как массив, прежде чем я проанализирую его или загрузлю ExtensionData и проанализирую его?
В ленте есть другие элементы, с которыми у меня нет проблем. Просто застрял с этим одним разделом.
Спасибо
1 ответ
Вы можете использовать json.net для десериализации данных (json, который вы вставили, и выполнил только один анализ, ничего не изменяя).
с помощью dynamic foo = JsonConvert.DeserializeObject<dynamic>(data)
чем, вы можете повторить список с помощью foo.people
, доступ к имени и значению.
Вы можете создать класс (если вы знаете, что такое схема, и десериализовать данные в список данного класса, например:
public class People
{
[JsonProperty(PropertyName="people")]
public IDictionary<string, Person> Persons { get; set; }
}
public class Person
{
[JsonProperty(PropertyName="name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
}
и чем позвонить:
var obj = JsonConvert.DeserializeObject<People>(data);
foreach (var item in obj.Persons.Values)
{
//item is instance of Person
}
Другим хорошим и возможным вариантом будет: Как я могу перемещаться по любому дереву JSON в C#?