Json.net实现方便的Json转C#(dynamic动态类型)对象
发布时间:2020-12-16 18:56:42 所属栏目:百科 来源:网络整理
导读:以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收。这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦。 比如之前做的一个接收百度七天天气预报的API,层层嵌套,很痛苦。 C#
以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收。这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦。 比如之前做的一个接收百度七天天气预报的API,层层嵌套,很痛苦。 C# 4.0 之后有了动态类型dynamic。用这个东西配合Json.net可以实现不用定义实体类的json转dynamic类型对象。 以下示例需要先引用Newtonsoft.Json.dll
public class Person { public int Id { get; set; } public string Name { get; set; } } using Newtonsoft.Json; class Program { static void Main(string[] args) { Person p = new Person(); p.Id = 1; p.Name = "刘备"; //C#对象转Json string json = JsonConvert.SerializeObject(p); Console.WriteLine(json); //{"Id":1,"Name":"刘备"} //此处模拟在不建实体类的情况下,反转将json返回dynamic对象 var DynamicObject = JsonConvert.DeserializeObject<dynamic>(json); Console.WriteLine(DynamicObject.Name); //刘备 Console.ReadKey(); } } 以上只是借用了一个实体类来获得一个简单的JSON对象。 实际上,可以完全没有这个Person类。 如果未引用Microsoft.CSharp.dll,关于动态类型,VS可能会报错。 VS 可以回编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用? using Newtonsoft.Json; class Program { static void Main(string[] args) { string json = "{'Id':1,'Name':'刘备','Age':22}"; //此处模拟在不建实体类的情况下,反转将json返回回dynamic对象 var DynamicObject = JsonConvert.DeserializeObject<dynamic>(json); Console.WriteLine(DynamicObject.Name + DynamicObject.Age); //刘备 Console.ReadKey(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |