Dynamic系列--Dynamic 與反序列化

一般在調用其餘站點的api時,若是返回的結果爲 json數據,而咱們又不想再從新定義實體類時,能夠使用dynamic類型。
可是有如下須要注意的地方。json

  • 當內容爲空時,反序列化結果爲null
  • 當內容格式有誤,不可反序列化時,將會拋出異常。
  • 內容正確時,獲得的對象是 Dictionary<string,object> ( 爲何不是真正的dynamic,這裏究竟發生了什麼?須要後期研究 )
  • 若是是數組,則獲得的對象是 object[] 每一個object爲Dictionary<string,object>。

且看以下代碼api

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();
        }
    }
}
相關文章
相關標籤/搜索