java - 标准 JSON 表示

标签 java web-services json jaxb

我们正在构建一个使用和生成 JSON 的 Web 服务。

问题: 我们对如何表示对象的某些特定细节感到有点困惑。

示例:我们在 JSON 中将任何空元素或 null 元素指定为 null

我们问自己的问题是,当一个对象的属性全部为空时,我们如何表示一个对象。

示例:car 是一个对象,color 和 make 是属性,均为 null。

我们将其表示为

car : {
    "color": null,
    "make" : null
}

有些人认为它应该表示为

car : null

所以可以说, car : null 是正确的方法。 car 并不是域对象的精确表示。它是域对象的一部分,我们称之为大汽车。所以我们在某种翻译器中制作汽车 View 对象。因此,我们找到了一种痛苦的方法来检查 car 对象中的每个字段,如果它们为 null,则将 car 设置为 null,以便 jackson jaxb 提供程序可以将其呈现为 null。我知道这不是正确的方法。

有人可以提出替代方案吗?

有没有一个地方我们可以检查是否有任何 View 对象的所有子项都为空?然后将其设置为 null。

哪种方式更消耗?

最佳答案

如果我理解正确的话,您试图代表三种不同的情况。一个是没有汽车,另一个是有一辆汽车,但我们对它一无所知,最后一个是有一辆汽车,我们对它有所了解(也许是关于它的一切)。那么可能存在三种情况:

(1) 里卡多没有车

'ricardo': {
  'car': null
}

(2) 里卡多有一辆车,但我们对此一无所知

'ricardo' : {
  'car' : {
    'color' : null,
    'make' : null
   }
 }

(3) 里卡多有一辆车,我们对它有所了解(或一切)

'ricardo' : {
  'car' : {
    'color' : 'red',
    'make' : 'ferrari'
   }
}

您需要确定需要建模的内容并相应地进行表示。检查here供最终引用。

关于java - 标准 JSON 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322712/

相关文章:

java - 通过 Spring 创建具有可配置端点的 Web 服务

ajax - 使用 Ajax 调用将 Json 数据绑定(bind)到下拉列表

java - JSON 解析 : org. json.JSON.typeMismatch

php - 从 json api 到 mysql

java - 当我定义接口(interface)方法的参数 final 时,我需要在实现中重复 final 吗?

java - 将电话号码从 double 转换为整数

java - Spring OSGI 服务引用接口(interface)必须由消费包显式导入?

java - 如何通过 Activity 的 ID 在导航 View 中找到 View ?

java - Play 2.5 错误 - CompletionStage<WSResponse> 无法转换为 F.Promise<WSResponse>

c# - Web Http 请求失败 (500) 而 postman 成功运行 Web GET 请求