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