我从外部来源获得一个带有TONS字段的json。我不关心他们中的大多数,我只需要他们中的“一些”。 (处于不同的孩子级别)。
所以我猜我不需要“强类型”。试过:
JavaScriptSerializer js = new JavaScriptSerializer();
var obj = jss.Deserialize(myJson);
但似乎我不能这样做?我该怎么做?
使用:
jss.Deserialize<dynamic>(objectText);
比我无法使用LINQ搜索字段......
答案 0 :(得分:4)
使用JSON.Net,您可以反序列化为您定义的对象。您定义的对象只能是部分匹配。然后DeserializeObject<>
将忽略所有其他JSON字段。
例如JSON:
{
Cat: "Tom",
Mouse: "Jerry",
Duck: "Donald"
}
使用此:
public class LooneyTunes
{
public string Cat { get; set; }
public string Mouse { get; set; }
}
var looneyTunes = JsonConvert.DeserializeObject<LooneyTunes>(json);
这将忽略Duck
属性并正确反序列化其余属性。因此,使用此技术,您可以选择您感兴趣的JSON消息的哪一部分。
答案 1 :(得分:1)
尝试使用Newtonsoft Json.NET,它有一个动态的JObject,它可以解释几乎任何东西,如果它是一个子句列表,你将能够用LINQ查询它们。
答案 2 :(得分:0)
您可以创建类并省略不需要的字段。
但我建议让班级对(反)序列化有更多的控制权。
如前所述,JSON.NET是此类任务的最佳库之一。
查看以下链接,该链接显示如何将json反序列化为object,然后获取值: