Dynamic系列--Dynamic 與反序列化


通常在調用其他站點的api時,如果返回的結果為 json數據,而我們又不想再重新定義實體類時,可以使用dynamic類型。
但是有以下需要注意的地方。

  • 當內容為空時,反序列化結果為null
  • 當內容格式有誤,不可反序列化時,將會拋出異常。
  • 內容正確時,得到的對象是 Dictionary<string,object> ( 為什么不是真正的dynamic,這里究竟發生了什么?需要后期研究 )
  • 如果是數組,則得到的對象是 object[] 每個object為Dictionary<string,object>。

且看如下代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace ConAppTestJavaScriptSerilazation
{
    class Program
    {
        static void Main(string[] args)
        {

            //反序列化 返回結果為 object  真是類型是Dictionary<string,object>
            var content0 = @"{name:'cjt',age:10}";
            var res0 = new JavaScriptSerializer().Deserialize<dynamic>(content0);

            //反序列化 返回結果為 object[] 每個object實際上是一個Dictionary<string,object>類型
            var content1= @"[
                                {name:'cjt',age:10},
                                {name:'cjt2',age:21},
                                {name:'cjtc',age:16}
                            ]";
            var res1 = new JavaScriptSerializer().Deserialize<dynamic>(content1);


            //當內容為空時,反序列化返回結果為NULL
            var content2 = "";
            var res2 = new JavaScriptSerializer().Deserialize<dynamic>(content2);

            Console.ReadLine();
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM