Мой JSON выглядит следующим образом:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
Я нашел библиотеку десериализации Newtonsoft JSON.NET для С#. Я попытался использовать его следующим образом:
object JsonDe = JsonConvert.DeserializeObject(Json);
Как я могу получить доступ к объекту JsonDe
, чтобы получить все данные "Тип"? Я пробовал его с помощью цикла, но он не работает, потому что у объекта нет счетчика.
Ответ 1
Вы можете реализовать класс, который содержит поля, которые у вас есть в 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
Ответ 2
Более простое решение: использование динамического типа
Как и в Json.NET 4.0 Release 1, существует встроенная поддержка dynamic.
Вам не нужно объявлять класс, просто используйте 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;
С динамическим вам не нужно создавать определенный класс для хранения ваших данных.
Ответ 3
В соответствии с Newtonsoft Documentation вы также можете десериализовать анонимный объект следующим образом:
var definition = new { Name = "" };
string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);
Console.WriteLine(customer1.Name);
// James