0

我从外部来源获得了一个包含大量字段的 json。我不在乎他们中的大多数,我只需要其中的“一些”。(它们处于不同的子级)。

所以我猜我不需要一个“强类型”的对象。试过:

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

但似乎我做不到?我该怎么做?

使用:

jss.Deserialize<dynamic>(objectText);

比我不能使用 LINQ 搜索字段...

4

3 回答 3

6

使用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 消息的哪一部分。

于 2013-07-16T08:34:46.797 回答
2

尝试使用Newtonsoft Json.NET,它有一个动态 JObject 可以解释几乎任何东西,如果它是一个子值列表,您将能够使用 LINQ 查询它们。

于 2013-07-16T08:33:34.207 回答
0

You can create class and omit fields that you don't need.

But I would suggest to have class to have more control on (de)serialization.

As already suggested, JSON.NET is one of the best library for this kind of task.

Check out below link that shows how to deserialize json to object and then get the values:

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

于 2013-07-16T08:41:17.953 回答