Newtonsoft JSON反序列化

我的JSON如下所示:

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

我发现了C#的Newtonsoft JSON.NET反序列化库。 我试图使用它如下:

 object JsonDe = JsonConvert.DeserializeObject(Json); 

如何访问JsonDe对象以获取所有“types”数据? 我试了一个循环,但它不工作,因为该对象没有一个枚举。

你可以实现一个包含你在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

更简单的解决scheme:使用dynamictypes

从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; 

dynamic的你不需要创build一个特定的类来保存你的数据。

根据Newtonsoft文档,您也可以反序列化为这样的匿名对象:

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