空对象的JSON规范

时间:2017-05-01 05:31:25

标签: json rest standards conventions json-spec

此问题与标准和惯例更为相关,与this密切相关。

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

这是我所指的

的一个例子
Sample JSON

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

当像

这样的空物体时
'Vehicle' : {}

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

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

不幸的是,这是一个在模板协议期间未捕获空对象的清晰定义的区域。服务器团队声称这是JSON规范中定义的内容,http://www.json.org/

并不清楚

有关合同的其他信息:

  
      
  1. REST服务用于存储和检索JSON对象,不应对JSON对象进行任何修改。
  2.   
  3. 也没有从REST服务中预期的任何排序的计算,聚合或转换。
  4.   
  5. JSON从中间件服务(服务器团队)发送到其他下游系统。
  6.   

有关此问题影响的其他信息:

  
      
  1. UI应用程序(基于React)在将空值从JSON合并到不可变结构(用于UI消耗)方面存在问题。空对象处理得很好,但是具有null属性的对象需要额外的开销。
  2.   
  3. REST服务是用Java开发的,因为总是返回空对象,其中 属性 具有空值。
  4.   

问题:

  

服务器团队引用JSON规范并声明'当空对象发送到REST服务(没有属性)时是否正确,它将始终通过 属性 <发回/ strong>具有空值?

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

1 个答案:

答案 0 :(得分:1)

您所询问的内容没有“规范”。这只是服务器和客户端之间达成一致的问题。服务器团队指定其代码为不存在的属性返回null既不“正确”也不“不正确”。但是,他们声称JSON规范 - 仅描述JSON语法而不是如何使用它 - 要求事情以这种方式工作确实是“不正确的”。

  

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

我对此声明感到有些困惑。如果您的下游逻辑在使用空值时出现问题,那么从对象中过滤掉null属性值似乎很简单且成本低廉。