如何从JSON中只获取一些字段?

时间:2013-07-16 08:24:42

标签: c# .net webforms

我从外部来源获得一个带有TONS字段的json。我不关心他们中的大多数,我只需要他们中的“一些”。 (处于不同的孩子级别)。

所以我猜我不需要“强类型”。试过:

JavaScriptSerializer js = new JavaScriptSerializer();
var obj = jss.Deserialize(myJson);
但似乎我不能这样做?我该怎么做?

使用:

jss.Deserialize<dynamic>(objectText);

比我无法使用LINQ搜索字段......

3 个答案:

答案 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,然后获取值:

https://stackoverflow.com/a/5502317/309395