json - Jaxb 是否需要 @XmlElement

标签 json xml jaxb jersey

我的问题是,在进行 JSON 响应时,是否有必要在 pojo 中的每个元素之前添加 @XmlElement 以供 jaxb 获取。我正在使用 jersey-json 1.17 。我问这个的原因是因为,the example given on Jersey site不使用注解。

我得到一个作为 {} 的输出,但是当我在属性前添加 @XmlElement 时,我得到了预期的 JSON 输出。我是不是做错了什么,导致我的 JSON 字符串为空?

我的代码:

顶点列表在构造函数中填充。

这会产生 {} 的错误输出

@XmlRootElement
public class SquareModel {
    List<Float> vertices = new ArrayList<Float>();
    ....
}

而这会生成正确的 JSON 字符串:

@XmlRootElement
public class SquareModel {
    @XmlElement(name="vertices")
    List<Float> vertices = new ArrayList<Float>();
    ....
}

返回 JSON 的我的资源类

@GET
@Produces(MediaType.APPLICATION_JSON)
public SquareModel getJsonString() {
    return new SquareModel();
}

谢谢:)

最佳答案

不,默认情况下,JAXB (JSR-22@) 实现会将所有公共(public)字段和属性(get/set 组合)视为已映射(不需要 @XmlElement 注释)。

如果您想注释一个字段,我建议您使用 @XmlAccessorType(XmlAccessType.FIELD)

注释您的类

关于json - Jaxb 是否需要 @XmlElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749599/

相关文章:

java - JAXBContext newInstance(class,class) 解释

javascript - 关于在 Angular JS 中创建矩阵表的建议

json - 无法使用 Alamofire Swift 获取 Json 数据

python - JSON 文件选择键和值出错

xml - 处理 XML 时的异常处理

eclipse - 生命周期配置未涵盖插件执行

arrays - 在单个 JSON Patch 操作中向数组添加多个值?

java - 在旧设备上找不到 Android 资源 ID

xml - 具有可选子元素的默认 XML 序列(或全部)是否必须至少有一个子元素?

java - 将 java 对象可靠地存储在文件中的最少代码