2012-03-11 24 views
0

當使用Microsoft命名空間System.Web.HelpersSystem.Web.Script.Serialization時,我預計Microsoft序列化器在Microsofts動態JSON對象中表現良好。事實證明,這是一個天真的假設。 JavaScriptSerializer將對象序列化爲「{}」。這個看似平凡的任務的推薦方式是什麼?從Microsoft DynamicJsonObject中提取JSON字符串的簡單方法是什麼?

 dynamic obj = new DynamicJsonObject(new Dictionary<string,object>()); 
    obj.FirstName = "Henry"; 
    obj.LastName = "Ford"; 
    JavaScriptSerializer jsc = new JavaScriptSerializer(); 
    string str = jsc.Serialize(obj); 
    Assert.AreNotEqual(str, "{}"); // Does not fail 

回答

1

嘗試Json.Net

dynamic obj = new DynamicJsonObject(new Dictionary<string,object>()); 
obj.FirstName = "Henry"; 
obj.LastName = "Ford"; 
string str = JsonConvert.SerializeObject(obj); 

它會做成功。你可以用匿名類使用

string s = JsonConvert.SerializeObject(new {FirstName="Henry",LastName="Ford"}); 

ExpandoObject

dynamic obj = new ExpandoObject(); 
obj.FirstName = "Henry"; 
obj.LastName = "Ford"; 
string s = JsonConvert.SerializeObject(obj); 

反序列化到動態對象也可以

dynamic obj2 = JsonConvert.DeserializeObject(@"{""FirstName"":""Henry"",""LastName"":""Ford""}"); 
Console.WriteLine(obj2.FirstName + " " + obj2.LastName); 
+0

不Json.Net提供替代DynamicJsonObject或者我應該使用System.Web.Helpers實現?我不打動我在System.Web – 2012-03-11 18:18:34

+0

下找到的東西,我會標記爲在什麼時候以及是否斷定Microsoft組件被破壞(或者視情況而定)。 – 2012-03-11 18:21:45

+0

@JackWester,我不知道我理解你的問題,因爲你不需要'DynamicJsonObject'來處理動態對象。我更新了答案,展示瞭如何爲此使用'ExpandoObject' - L.B 11分鐘前 – 2012-03-11 18:59:19

相關問題