2013-07-16 99 views
0

我从一个外部源获得一个带有TONS字段的json。我不关心他们中的大多数,我只需要他们中的“一些”。 (这是在不同的孩子级别)。如何从JSON获取一些字段?

所以我不需要有一个“强类型”的主题,我猜。试着用:

JavaScriptSerializer js = new JavaScriptSerializer(); 
var obj = jss.Deserialize(myJson); 

,但似乎我不能这样做呢?我该怎么做?

使用:

jss.Deserialize<dynamic>(objectText); 

比我不能使用LINQ搜索领域...

回答

1

尝试使用Newtonsoft Json.NET,它有一个动态JObject这可以解释相当多的东西也是,如果它是您将能够使用LINQ查询它们的子值列表。

3

使用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

你可以用JavaScriptSerializer做的一样。 –

0

您可以创建不需要的类和省略字段。

但我建议有类对(德)序列化有更多的控制。

如前所述,JSON.NET是这类任务中最好的库之一。点击以下链接

退房,显示了如何反序列化JSON反对,然后得到的值:

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