加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 18:59:50 所属栏目:百科 来源:网络整理
导读:http://www.cnblogs.com/scottckt/archive/2011/12/14/2287471.html 首先定义一个匿名对对象,并序列化成Json,用于测试。 如何将这个Josn字符串转换为JSON对象呢?如果先创建一个类的话,那就太累了。 var o= new { a= 1 , b= " Hello,World! " , c= new []

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 "][ "]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读