110,535
社区成员
发帖
与我相关
我的任务
分享
var x = new ExpandoObject();
dynamic y = x;
y.A = 1;
y.B = "1234";
y.C = new List<DateTime> { new DateTime(208, 9, 29) };
y.clickRequest = new ExpandoObject();
y.clickRequest.account = "hello";
y.clickRequest.number = 934234;
你可以随意增加新的“属性”,这里的“基础”是 ExpandoObject 类型概念,而“上层建筑”是 dynamic 语法糖。var x = new ExpandoObject();
dynamic y = x;
y.A = 1;
y.B = "1234";
y.C = new DateTime(2018, 9, 29);
使用 dynamic 语法糖,使用 ExpandoObject 类型结构为基础,就可以直观地编程管理字典。
string json = "{\"clickRequest\": {\"account\": \"ge4tonrx\",\"candyId\": 4},\"prop1\": 10}";
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic obj = jss.DeserializeObject(json);
var result = obj["clickRequest"]["account"]; //JavaScriptSerializer反序列化后的访问
dynamic obj2 = JsonConvert.DeserializeObject(json);
var result2 = obj2.clickRequest.account; //JsonConvert反序列化后的访问:Newtonsoft json第三方组件
obj2.firstLevel1 = "abc"; //添加一级新属性和值
obj2.firstLevle2 = new JObject //添加二级属性和值
{
new JProperty("childObjInt", 10),
new JProperty("childObjString", "abc")
};
Console.WriteLine(string.Format("obj/{0}:{1}", obj.GetType().ToString(), result));
Console.WriteLine(string.Format("obj2/{0}: {1}, {2}", obj2.GetType().ToString(), result2, obj2.firstLevle2.childObjInt));
string json = "{\"clickRequest\": {\"account\": \"ge4tonrx\",\"candyId\": 4},\"prop1\": 10}";
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic obj = jss.DeserializeObject(json);
var result = obj["clickRequest"]["account"]; //JavaScriptSerializer反序列化后的访问
dynamic obj2 = JsonConvert.DeserializeObject(json);
var result2 = obj2.clickRequest.account; //JsonConvert反序列化后的访问:Newtonsoft json第三方组件
Console.WriteLine(string.Format("obj/{0}:{1}", obj.GetType().ToString(), result));
Console.WriteLine(string.Format("obj2/{0}: {1}", obj2.GetType().ToString(), result2));