通常在調用其他站點的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();
}
}
}
