2012-06-26 132 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

相关问题