2014-07-06 188 views
1

我有這個代碼在asp.net ashx的文件:訪問JSON對象值

jsonString="{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
var a = j.Deserialize(jsonString, typeof(object)); 

,並得到JSON字符串,並轉換爲「A」的對象,我怎麼能得到的價值呢? 例如我需要獲得ID字段值到[ID,54]?

回答

1

既然你不指定反序列化強類型的目標類型(而不是object等),JavaScriptSerializer將返回Dictionary<string, object>,你就會有訪問它,如下所示:

string jsonString = "{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
dynamic data = j.Deserialize(jsonString, typeof(object)); 
string id = data["id"]; // equals 54 

然而,您最好定義自己的自定義類型以訪問反序列化的數據。例如:

public class Person 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

string jsonString = "{'id':'54','name':'reza'}"; 
JavaScriptSerializer j = new JavaScriptSerializer(); 
Person person = j.Deserialize<Person>(jsonString); 
string id = person.id; // equals 54 
+1

+1值得注意的是,該字符串不*包含有效的JSON。它確實包含有效的JavaScript,但我認爲序列化程序很樂於與之合作。 –

+0

@Behzad Razzaqi,小心解釋你爲什麼不接受?它不再有效嗎? – haim770