【问题标题】:Standard JSON representations标准 JSON 表示
【发布时间】:2010-07-23 22:01:41
【问题描述】:

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

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

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

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

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

我们将其表示为

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

有人认为应该表示为

car : null

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

谁能提出替代方案??

有没有一个我们可以检查的地方,有没有所有子元素都为空的视图对象?然后将其设置为 null。

哪种方式更消耗??

【问题讨论】:

    标签: java web-services json jaxb


    【解决方案1】:

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

    (1) 里卡多没有车

    'ricardo': {
      'car': null
    }
    

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

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

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

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

    您需要确定需要建模并相应地进行表示。检查here 以获得最终参考。

    【讨论】:

    • 嗨 marimon,假设汽车是大型汽车的子对象。我对大型汽车有所了解,但我想要的汽车并不存在于大型汽车中。这可以表示为第二种方法吗?这就是我们正在做的......但是,对吗?还有我们如何检查我们对汽车一无所知?它不能像一系列非空检查......还有其他有效的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多