gpt4 book ai didi

java - 为对象显示 null -JSON- JAXB

转载 作者:搜寻专家 更新时间:2023-11-01 02:54:42 25 4
gpt4 key购买 nike

我想在 JSON 表示中将 null 对象编码(marshal)为 null。但是,现在,如果对象为空,我看不到 JSON 中的元素。

Example:
@XmlAccessType(FIELD)
@XmlType(name="foo" propOrder={"foo"}
class foo{
@XmlElement
private Integer foo;
private Integer another_foo;
..

getter()
setter()

}

在我的代码中,我将 foo 元素设置为 null。

但 JSON 表示不显示响应中的元素。

响应看起来像这样

"foo" :{
"another_foo":something
}

我尝试将 xml 元素属性 nillable 设置为 true。 (@XmlElement(nillable=true)

这使得响应看起来像,

"foo" :{
"another_foo" : something
"foo":{nil :true}
}

我希望它像,

    "foo" :{
"another_foo":something
"foo" : null
}

这里做错了什么?

最佳答案

首先要注意的是:JAXB 不处理 JSON。它是一个 XML API。所以你可能正在使用一个框架(我的猜测:JAX-RS 实现,比如 Jersey)?有必要知道您使用的是哪一个,以便提供更多帮助。

假设如此,问题是,包如何使用 JAXB 注释来指导 JSON 序列化。有些基本上将对象转换为 XML(逻辑结构或完整的 xml),然后使用约定转换为 JSON。由于 XML 和 JSON 之间的数据模型不同,这可能会导致数据丢失。

现在:大多数 JAX-RS 实现的简单解决方案是根本不使用基于 JAXB 注释的方法,而是使用特定于 JSON 的序列化程序,例如 Jackson的 JacksonJsonProvider(Jackson 实际上也可以使用 JAXB 注释)。默认情况下,它会包含属性的空值,但如果您想抑制空值,这是可以配置的。

这里是 JavaDoc这显示了如何将 Jackson 提供程序(为配置指定 FEATURE_POJO_MAPPING)与 Jersey 一起使用,如果这可能有帮助的话。

关于java - 为对象显示 null -JSON- JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com