Json.net實現方便的Json轉C#(dynamic動態類型)對象

來源:互聯網
上載者:User

標籤:ogr   read   json   adk   mic   img   log   obj   對象   

以前需要將一段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 可以回編譯報錯:找不到編譯動態運算式所需的一個或多個類型。是否缺少引用?

Json.net實現方便的Json轉C#(dynamic動態類型)對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.