空对象的JSON规范

这个问题更多地与标准和惯例有关,并且与此密切相关。

我们在两个不同的组之间建立了JSON合约,即处理基于React的框架的UI团队和开发Java中的REST服务的服务器团队。 没有捕获到的东西是应该为“空”对象发送和检索的内容。 我想知道是否有任何已知的JSON约定要求以某些方式发送空对象。

这是我所指的一个例子

Sample JSON

'Vehicle': {'Make': 'BMW', 'Model': 'Enclave', 'Year' : '2017' }

当一个空的物体像

'Vehicle' : {}

从UI应用程序发送到REST服务,我认为,期待相同的对象返回是公平的。 服务器团队抱怨说,由于服务/ JSON映射的性质,当发送空对象时,返回的对象将具有如下的空属性:

'Vehicle' : {'Make' : null, 'Model' : null, 'Year' : null} 

不幸的是,这是一个在模板协议中没有明确定义空物体的区域。 服务器团队声称这是JSON规范中定义的内容,从http://www.json.org/

有关合同的其他信息:

  • REST服务用于存储和检索JSON对象,并且不希望对JSON对象进行任何修改。
  • 也没有任何计算,汇总或REST服务预期的任何类型的翻译。
  • JSON从中间件服务(服务器团队)发送到其他下游系统。
  • 有关此问题的其他信息:

  • UI应用程序(基于React)在将JSON的空值合并到不可变结构(用于UI消费)方面存在问题。 空对象处理得非常好,但具有空属性的对象需要额外的开销。
  • REST服务是在Java中开发的,因此空对象总是返回具有空值的属性
  • 题:

    服务器团队引用JSON规范并声明'空对象何时发送到REST服务(没有属性)是否正确,它总是会返回带有空值的属性

    注意:我没有在UI应用程序中遇到的问题寻求帮助,或者如何在REST服务中实现必需的JSON结构。


    对于你所要求的,没有“规范”。 这只是服务器和客户端之间的协议问题。 对于服务器团队来说,它们的代码对于不存在的属性返回null既不“正确”也不“错误”。 然而,他们声称JSON规范(仅仅描述JSON语法,而不是如何使用)要求事物以这种方式工作确实是“不正确的”。

    但是具有空属性的对象需要额外的开销。

    我对此陈述有些困惑。 如果你的下游逻辑对空值有问题,那么从一个对象中过滤掉空的属性值看起来很简单,并且花费不多。

    链接地址: http://www.djcxy.com/p/20799.html

    上一篇: JSON specification for empty objects

    下一篇: Is an object that contains a fixed set of mutable objects mutable?