Мой JSON выглядит следующим образом:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
Я нашел библиотеку десериализации Newtonsoft JSON.NET для C #. Я пытался использовать его следующим образом:
object JsonDe = JsonConvert.DeserializeObject(Json);
Как я могу получить доступ к JsonDe
объекту, чтобы получить все данные "Тип"? Я пробовал использовать цикл, но он не работает, потому что у объекта нет перечислителя.
c#
json.net
deserialization
abc cba
источник
источник
Ответы:
Вы можете реализовать класс, содержащий поля, которые есть в вашем JSON.
class MyData { public string t; public bool a; public object[] data; public string[][] type; }
а затем используйте универсальную версию DeserializeObject:
MyData tmp = JsonConvert.DeserializeObject<MyData>(json); foreach (string typeStr in tmp.type[0]) { // Do something with typeStr }
Документация: сериализация и десериализация JSON
источник
MyData tmp = (MyData)JsonConvert.DeserializeObject(json);
. Общая версия deserialize работает намного лучше, спасибо. :-)dotnet add package Newtonsoft.Json
иusing Newtonsoft.Json;
.Более простое решение: использование динамического типа
Начиная с Json.NET 4.0 Release 1, есть встроенная динамическая поддержка. Вам не нужно объявлять класс, просто используйте
dynamic
:dynamic jsonDe = JsonConvert.DeserializeObject(json);
Будут доступны все поля:
foreach (string typeStr in jsonDe.Type[0]) { // Do something with typeStr } string t = jsonDe.t; bool a = jsonDe.a; object[] data = jsonDe.data; string[][] type = jsonDe.Type;
При использовании dynamic вам не нужно создавать определенный класс для хранения ваших данных.
источник
dynamic
:)В соответствии с документацией Newtonsoft вы также можете десериализовать анонимный объект следующим образом:
var definition = new { Name = "" }; string json1 = @"{'Name':'James'}"; var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition); Console.WriteLine(customer1.Name); // James
источник
definition
том, как мне использоватьDeserializeAnonymousType
в этом случае?