2012-06-26 67 views
0

有沒有更好的方法來做到這一點?是否有更簡潔的方式來使用JavaScriptSerializer.Deserialize(json)?

JavaScriptSerializer jss = new JavaScriptSerializer(); 
Dictionary<string, object> dic = 
    jss.Deserialize<Dictionary<string, object>>(json); 
Dictionary<string, object>.Enumerator enumerator = dic.GetEnumerator(); 
enumerator.MoveNext(); 
ArrayList arr = (ArrayList)enumerator.Current.Value; 
foreach (Dictionary<string, object> item in arr) 
{ 
    string compID = item["compID"].ToString(); 
    string compType = item["compType"].ToString(); 
} 

我要的是我的項目(即補償)

我送一個JSON像這樣的數組:

{ "comps" : [ { compID : 1 , compType : "t" } , { ect. } ] } 
+0

有幾個第三方庫,將幫助清理:嘗試http://json.codeplex.com/和http://www.codeproject.com/Articles/159450/fastJSON – Liam

回答

7

有沒有一種更好的方式來做到這一點?

是,通過定義模型:

public class MyModel 
{ 
    public IEnumerable<Comp> Comps { get; set; } 
} 

public class Comp 
{ 
    public int CompId { get; set; } 
    public string CompType { get; set; } 
} 

,然後反序列化JSON字符串這個模式,使您可以用強類型,魔術字符串不是有些字典工作:

JavaScriptSerializer jss = new JavaScriptSerializer(); 
MyModel model = jss.Deserialize<MyModel>(json); 
foreach (Comp comp in model.Comps) 
{ 
    // Do something with comp.CompId and comp.CompType here 
} 
+0

投票和標記!謝謝! – bresleveloper

+0

給讀者的註釋 - 模型和json中的名字需要完全相同(我試圖改變和嘲弄),我相信使用大寫字母的原因是因爲它的道具實際上創建了一個具有相同名稱的var非資本我對嗎? – bresleveloper

相關問題