JSON null应该保留吗?

时间:2012-06-18 11:08:31

标签: json

我尝试转换JSON数据

{
  "a": {
    "b": null
  }
}
使用an online converter

到XML。回应是

<a>
  <b />
</a>

使用相同的转换器将其转换回JSON给了我

{
  "a": {

  }
}

这让我想知道 - 如果你明确给出了一个null值,你在处理JSON时是否需要保留它?我很确定XML <a><b /></a> 等同于<a></a>,尤其不是<a />(这恰好是我继续同样的练习)。

换句话说,如果我交给了未知来源的JSON并且我应该把它交给一个未知的接收者,我是否需要保留空值或者我可以安全地删除它们吗?相反,我可以依靠我的空值以与第三方软件交付时相同的方式结束吗?

这是一个类似的问题:Should JSON include null values - 但问题是,如果你自己定义格式,代码是否应输出空值,而不是你不应该做什么了解原始格式。

编辑 - 澄清:我问这个问题的方式很糟糕,显然引起了混乱。换句话说:我理解XML和JSON是不同的格式,并且能够携带不同种类的(元)数据。我知道 null 是有效值,由RFC4627定义。我明白,在XML和JSON之间进行转换有不同的方法,因为格式没有一对一的关系。我明白我找到的转换器可能有问题。但是,相同的转换器在两个方向上都没有提供相同的转换(从"b": null转换为<b />时没有信息丢失,而且相反的方向本来是可能的)让我想知道一些我无法找到答案尽管尝试:

  • 根据JSON标准,将{"a":{"b":null}}{"a":{}}视为代表其他软件传输时的同一个对象是否合法?

请注意,我在这里假设在我认为合适时添加或删除空格是合法的(例如漂亮打印,根据RFC4627可以,)甚至重新排列集合中的名称/值对(再次根据RFC4627)。我只是不知道是否必须以与重要数据相同的方式保留 null ,或者可以以与无效空格相同的方式删除 null

2 个答案:

答案 0 :(得分:0)

是的,null是JSON中的一个单独值,显然不同于没有属性。此外,您可以在XML中看到有关空值的this question。这里要总结的并不是JSON或XML有问题,而只是说你使用的工具没有编码来处理这些情况。

答案 1 :(得分:0)

将JSON转换为XML的一个问题是,如果您尝试使转换无损,最终会出现一些“不自然”的XML,而如果您尝试创建最自然的XML表示,则最终会丢失信息。这就是为什么有很多不同的转换器都以略微不同的方式做到这一点。选择符合您要求的那个。

相关问题