Json.net实现方便的Json转C#(dynamic动态类型)对象

来源:互联网 发布:林俊杰 唱功 知乎 编辑:程序博客网 时间:2024/04/29 13:45
    以前需要将一段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; }} 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类

static void Main(string[] args){    string json = "{\"Id\":1,\"Name\":\"刘备\",\"Age\":\"22\"}";    //此处模拟在不建实体类的情况下,反转将json返回回dynamic对象    var DynamicObject = JsonConvert.DeserializeObject<dynamic>(json);    Console.WriteLine(DynamicObject.Name);  //刘备    Console.ReadKey();}
如果未引用Microsoft.CSharp.dll,关于动态类型,VS可能会报错。
VS 可以回编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用?


阅读全文
1 0
原创粉丝点击