Java 泽西失去身份证
我使用Jersey作为JSR311实现。我试图转换为JSON的对象如下所示: 结果是: 换句话说,“id”字段正在丢失。在我的其他对象中,id字段具有其他名称,如orderId、customerId等。。。这些字段不会丢失 我的pom.xml如下所示:Java 泽西失去身份证,java,spring,jersey,jsr311,Java,Spring,Jersey,Jsr311,我使用Jersey作为JSR311实现。我试图转换为JSON的对象如下所示: 结果是: 换句话说,“id”字段正在丢失。在我的其他对象中,id字段具有其他名称,如orderId、customerId等。。。这些字段不会丢失 我的pom.xml如下所示: 泽西岛 泽西服务器 1.11 泽西岛 泽西json 1.11 泽西岛 泽西灰熊2 1.11 泽西岛 泽西servlet 1.11 com.sun.jersey.contribs 泽西之春 1.11 org.springframe
泽西岛
泽西服务器
1.11
泽西岛
泽西json
1.11
泽西岛
泽西灰熊2
1.11
泽西岛
泽西servlet
1.11
com.sun.jersey.contribs
泽西之春
1.11
org.springframework
春天
org.springframework
弹簧芯
org.springframework
弹簧网
org.springframework
春豆
org.springframework
spring上下文
没有进一步的配置。
我在泽西岛的网站上或谷歌上都找不到任何有用的东西,所以我在这里发表了我的第一篇文章
是否缺少任何配置选项?如何对id字段进行JSONify?id没有什么特别之处。从类上的
@XmlRootElement
中,我假设您正在使用JAXB进行编组(Jersey的默认值)。在默认配置中,JAXB需要一个getter将字段封送到XML/JSON,并需要一个setter将字段从XML/JSON解封。在本例中,我猜您缺少一个公共整数getId()
方法。通过将@xmlement
添加到id
字段,可以轻松更改此行为。可能无法封送id
的原因有很多
1-它有一个空值
默认情况下,JAXB实现不会封送空值。如果希望封送空值,请确保添加以下注释
@XmlElement(nillable=true)
有关更多信息,请参阅:
XmlAccessorType(XmlAccessType.FIELD)
或者通过注释字段
@XmlRootElement
public class deliveryTimes{
@XmlElement
private Integer id;
}
有关更多信息,请参阅:
如果有一个get方法,但没有附带的set方法,那么JAXB实现会将其视为未映射属性。要解决此问题,只需将get方法映射为
@xmlement
,或者,如果没有属性,可以使用@xmlacessortype(xmlacesstype.FIELD),谢谢您的回答。实际上,我正在寻找一种传递空值的方法(您在#1中猜对了),并将“id”的数据类型从int更改为Integer,但忘记了setter。下次我将让IDE重构它。再次感谢您详细而有用的回答(如果我有足够的声誉,我会感谢的)!
<!-- 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 -->
@XmlElement(nillable=true)
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class deliveryTimes{
...
}
@XmlRootElement
public class deliveryTimes{
@XmlElement
private Integer id;
}