此问题与标准和惯例更为相关,与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/
并不清楚有关合同的其他信息:
- REST服务用于存储和检索JSON对象,不应对JSON对象进行任何修改。
- 也没有从REST服务中预期的任何排序的计算,聚合或转换。
- JSON从中间件服务(服务器团队)发送到其他下游系统。
醇>
有关此问题影响的其他信息:
- UI应用程序(基于React)在将空值从JSON合并到不可变结构(用于UI消耗)方面存在问题。空对象处理得很好,但是具有null属性的对象需要额外的开销。
- REST服务是用Java开发的,因为总是返回空对象,其中 属性 具有空值。
醇>
问题:
服务器团队引用JSON规范并声明'当空对象发送到REST服务(没有属性)时是否正确,它将始终通过 属性 <发回/ strong>具有空值?
注意:我不是在寻找UI应用程序中遇到的问题或如何在REST服务中实现必需的JSON结构的帮助。
答案 0 :(得分:1)
您所询问的内容没有“规范”。这只是服务器和客户端之间达成一致的问题。服务器团队指定其代码为不存在的属性返回null
既不“正确”也不“不正确”。但是,他们声称JSON规范 - 仅描述JSON语法而不是如何使用它 - 要求事情以这种方式工作确实是“不正确的”。
但是具有null属性的对象需要额外的开销。
我对此声明感到有些困惑。如果您的下游逻辑在使用空值时出现问题,那么从对象中过滤掉null属性值似乎很简单且成本低廉。