[.Net码农]用Json.NET将json字符串反序列化为json匿名对象

前端之家收集整理的这篇文章主要介绍了[.Net码农]用Json.NET将json字符串反序列化为json匿名对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://www.cnblogs.com/scottckt/archive/2011/12/14/2287471.html




首先定义一个匿名对对象,并序列化成Json,用于测试。 如何将这个Josn字符串转换为JSON对象呢?如果先创建一个类的话,那就太累了。
varo= new
{
a= 1,
b= " Hello,World! ",
c= new[]{ 2,128)">3},
d= newDictionary< string,int>{{ x 1},{ y 2}}
};

varjson=JsonConvert.SerializeObject(o);

第一种做法(匿名类):

varanonymous= new{a= 0,b=String.Empty,c= new int[ 0],d= int>()};
varo2=JsonConvert.DeserializeAnonymousType(json,anonymous);

Console.WriteLine(o2.b);
Console.WriteLine(o2.c[ 1]);


第二种做法(匿名类):
varo3=JsonConvert.DeserializeAnonymousType(json,255)">new{c= new int[ newDictionary< int>()});
Console.WriteLine(o3.d[ " y "]);

DeserializeAnonymousType 只是借助这个匿名对象参数(anonymous) 反射类型而已,也就是说它和反序列化结果并非同一个对象。正如 o3 那样,我们也可以只提取局部信息。

第三种做法(索引器):

实际上,我们也可以直接反序列化为 JObject,然后通过索引器直接访问。JObject、JProperty 等都继承自 JToken,它重载了基元类型转换操作符,我们可以直接得到实际结果。

varo2=JsonConvert.DeserializeObject(json) asJObject;

Console.WriteLine(( int)o2[ a "]);
Console.WriteLine(( string)o2[ b "]);
Console.WriteLine(o2[ c "].Values().Count());
Console.WriteLine(( d "][ "]);

猜你在找的Json相关文章