当前位置:首页 > C#

用Json.NET将json字符串反序列化为json匿名对象

happyfhb9年前 (2017-10-08)C#2323
摘要: var o = new {    a = 1,    b = "Hello, World!",   …
 var o = new
{
   a = 1,
   b = "Hello, World!",
   c = new[] { 1, 2, 3 },
   d = new Dictionary<string, int> { { "x", 1 }, { "y", 2 } }
};
var json = JsonConvert.SerializeObject(o);

 

第一种做法(匿名类):

var anonymous = new { a = 0, b = String.Empty, c = new int[0], d = new Dictionary<string, int>() };
var o2 = JsonConvert.DeserializeAnonymousType(json, anonymous);
Console.WriteLine(o2.b);
Console.WriteLine(o2.c[1]);

 

第二种做法(匿名类):

var o3 = JsonConvert.DeserializeAnonymousType(json, new { c = new int[0], d = new Dictionary<string, int>() });

Console.WriteLine(o3.d["y"]);

 

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

 

第三种做法(索引器):

 

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

var o2 = JsonConvert.DeserializeObject(json) as JObject;
Console.WriteLine((int)o2["a"]);
Console.WriteLine((string)o2["b"]);
Console.WriteLine(o2["c"].Values().Count());
Console.WriteLine((int)o2["d"]["y"]);

 

注意 使用 .Last.Path;  可以获取节点名称.

扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1255

“用Json.NET将json字符串反序列化为json匿名对象” 的相关文章

vb.net 随机函数 random 用法

VB.net 的写法dim rand as new random()i=rand.next(1,100)表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。命名空间:System程序集:mscorlib(在 mscorlib.dll 中)伪随机数是以相同的概率从一组有限的数字中选…

IIS_WPG用户组

IIS_WPG用户组在安装asp.net web应用程序时,发现文件夹的用户权限总设置不对,结果导致读写access数据库文件出错。仔细研究了一下,发现必须要给IIS_WPG用户组足够的权限,程序才能正常运行。IIS_WPG用户组是做什么的?为了管理的方便,在安装 IIS 6 时创建了 IIS_WP…

asp.net substring截取函数详细用法

asp.net  substring截取函数详细用法字符串截取,substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。substring(int beginIndex, int endIndex)  返回一个新字符串,它是此字符串的一…

传智播客.Net精品就业班培训专区目录

[传智播客.Net视频]第1季C#编程基础[传智播客.Net视频]第2季C#面向对象基础    [传智播客.Net视频]第3季WinForm基础  [传智播客.Net视频]第4季SQL从入门到提高    [传智播客.Net视频]第5季ADO.Net&…

学习心得 数据库连接类的书写规范

一般的规范都是建立3个类文件类1:字段(属性)model类2:方法(函数) dal类3:辅助或者就是 本来可以直接通过dal调用的方法 我在重写一遍 起中转作用 可以使程序更加清晰  bll…

c#中如何判断用户输入的字符全部为数字的方法-经典

             string num = textBox1.Text; //从文本框获取用户输入的值     …

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。