Newtonsoft JSON и десериализовать



мой JSON выглядит следующим образом:



{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}


Я нашел библиотеку Newtonsoft десериализации Json.NET для C#. Я попытался использовать его следующим образом:



object JsonDe = JsonConvert.DeserializeObject(Json); 


как я могу получить доступ к JsonDe объект, чтобы получить все данные "типа"? Я попробовал его с циклом, но он не работает, потому что объект не имеет перечислителя.

547   3  

3 ответов:

вы можете реализовать класс, который содержит поля, которые у вас есть в вашем 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

гораздо более простое решение: использование динамического типа

по состоянию на Json.NET 4.0 релиз 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;

С динамический вам не нужно создавать определенный класс для хранения ваших данных.

на Документация Newtonsoft вы также можете десериализовать анонимный объект следующим образом:

var definition = new { Name = "" };

string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);

Console.WriteLine(customer1.Name);
// James

Comments

    Ничего не найдено.