gpt4 book ai didi

java - Jersey 丢失了 id 字段

转载 作者:行者123 更新时间:2023-11-30 09:37:54 24 4
gpt4 key购买 nike

我正在使用 Jersey 作为 JSR 311 实现。我试图转换为 JSON 的对象如下所示:

@XmlRootElement
public class deliveryTimes{
private Integer id;
private Short type;
private Integer orderId;
/* ... more fields and autogenerated Getters & Setters ... */
}

JSON 结果是:

{"deliveryTimes":
[{"type":"1","orderId":"30449",/* ... other fields ... */ },
/* ... */
]}

换言之:字段“id”丢失了。在我的其他对象中,id 字段具有其他名称,如 orderId、customerId 等,这些字段不会丢失。

我的 pom.xml 看起来像这样:

<!-- other stuff -->
<!-- JERSEY -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-grizzly2</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.11</version>
</dependency>

<!-- Jersey + Spring -->
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.11</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- other stuff -->

没有进一步的配置。我没有在 Jersey 网站或通过谷歌找到任何有用的东西,所以我在这里发表了我的第一篇文章。

是否缺少任何配置选项?你如何 JSONify id 字段?

最佳答案

id 可能未编码的原因有很多。

1 - 它有一个空值

默认情况下,JAXB 实现不会编码空值。如果您希望编码出空值,请务必添加以下注释

@XmlElement(nillable=true)

有关详细信息,请参阅:

2 - 有一个字段但不是没有访问器(获取/设置)方法

默认情况下,JAXB 仅映射公共(public)字段和访问器。任何不符合此标准的内容都被视为未映射。您可以通过指定 XmlAccessorType(XmlAccessType.FIELD)

来解决此问题
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class deliveryTimes{
...
}

或通过注释字段

@XmlRootElement
public class deliveryTimes{
@XmlElement
private Integer id;
}

有关详细信息,请参阅:

3 - 有get方法但没有set方法

如果有 get 方法但没有随附的 set 方法,那么您的 JAXB 实现会将其视为未映射的属性。要解决此问题,您只需将 get 方法映射到 @XmlElement

关于java - Jersey 丢失了 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350473/

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