【问题标题】:How to get only some fields from a JSON?如何从 JSON 中只获取一些字段?
【发布时间】:2013-07-16 08:24:41
【问题描述】:

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

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

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

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

使用:

jss.Deserialize<dynamic>(objectText);

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

【问题讨论】:

    标签: c# .net webforms


    【解决方案1】:

    使用JSON.Net,您可以反序列化为您定义的对象。您定义的对象只能是部分匹配。然后DeserializeObject&lt;&gt; 将忽略所有其他 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 消息的哪一部分。

    【讨论】:

    • 你可以用 JavaScriptSerializer 做同样的事情。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      但我建议让课程对(反)序列化进行更多控制。

      如前所述,JSON.NET 是此类任务的最佳库之一。

      查看下面的链接,该链接显示如何将 json 反序列化为对象,然后获取值:

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

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多