【问题标题】:How do I get json.net to exclude nulls when deseralizing a collection? [duplicate]反序列化集合时如何让 json.net 排除空值? [复制]
【发布时间】:2012-01-24 16:06:10
【问题描述】:

我有返回的 JSON,它可能会返回空值作为值的一部分。我怎样才能,甚至有办法从集合中排除这些空值?

      {
     "id": "5551212",
     "from": {
        "name": "Message creator",
        "start_time": "2011-10-21T22:00:00",
        "end_time": "2011-10-23T17:00:00",
        "location": "area 51",
        "id": "2121212122"
     },
     "to": {
        "data": [
          {
              "name": "Jay-Z",
              "id": "77777"
           },
           {
              "name": "Bill Murray",
              "id": "88888"
           },
           null,
           {
              "name": "Anthony Hopkins",
              "id": "99999"
           }
        ]
     },
     "message": "Some message from somewhere",
     "updated_time": "2011-09-19T23:53:51+0000",
     "unread": 1,
     "unseen": 0
  }

Bill Murray 和 Anthony Hopkins 之间的通知返回 null。谢谢。

【问题讨论】:

  • Null 现在没有意义了吗?给我的消息!
  • 我从来没有说过 null 没有意义。根据此处的 API (james.newtonking.com/projects/json/help/html/…),您可以传递设置以包含或忽略空值。所以基于此,应该有一种机制来排除它们。
  • @leppie 不序列化 null 或空数组将减少 nosql 数据库中的文档大小,所以它有点重要

标签: c# json json.net


【解决方案1】:

您可以简单地装饰可以为空的属性/字段

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string Name { get; set; }

有关如何减小 json 大小的更多信息:http://james.newtonking.com/archive/2009/10/23/efficient-json-with-json-net-reducing-serialized-json-size.aspx

【讨论】:

  • 我会试试这个。一旦我开始工作就会投票。
  • 当然可以。这是博文中提到的作者本人推荐的方式
  • 您还可以通过更改SerializerSettings 上的属性来设置更大范围的空值处理。例如,在 Web API 上,您可能会这样做:config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore 在您的 WebApiConfig 类中。
【解决方案2】:

我会使用 convert 方法来获取 XML 字符串。

// jsonString is populated from your....
XmlNode xmlNode = JsonConvert.DeserializeXmlNode(jsonString);

XML 中的 null 值如下:

...<data></data>...

可以通过字符串替换或 XML 过滤轻松删除。

【讨论】:

  • XML 与 OP 的问题无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2015-01-18
相关资源
最近更新 更多