C# 有没有更干净的方法来使用JavaScriptSerializer.Deserialize(json)?

C# 有没有更干净的方法来使用JavaScriptSerializer.Deserialize(json)?,c#,.net,C#,.net,有更好的方法吗 JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, object> dic = jss.Deserialize<Dictionary<string, object>>(json); Dictionary<string, object>.Enumerator enumerator = dic.GetEnumerator(); enu

有更好的方法吗

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();
}
有更好的方法吗

是的,通过定义模型:

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

public class Comp
{
    public int CompId { get; set; }
    public string CompType { get; set; }
}
公共类MyModel
{
公共IEnumerable Comps{get;set;}
}
公共类公司
{
公共int CompId{get;set;}
公共字符串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
}
JavaScriptSerializer jss=new JavaScriptSerializer();
MyModel model=jss.Deserialize(json);
foreach(型号组件中的组件组件)
{
//在此处使用comp.CompId和comp.CompType执行操作
}

有两个第三方库可以帮助解决这个问题:请读者注意——模型和json中的名称必须完全相同(我试图更改并poof),我相信使用大写字母的原因是因为它的道具实际上创建了一个同名的var非大写字母,我说的对吗?
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
}