Json Jersey 2.x使用Pojo作为POST的参数
我在尝试使用POJO作为参数时遇到了一些NPE问题。 我正在使用默认配置将war maven生成的代码部署到Tomcat7中 我的方法的签名如下所示Json Jersey 2.x使用Pojo作为POST的参数,json,maven,tomcat,pojo,jersey-2.0,Json,Maven,Tomcat,Pojo,Jersey 2.0,我在尝试使用POJO作为参数时遇到了一些NPE问题。 我正在使用默认配置将war maven生成的代码部署到Tomcat7中 我的方法的签名如下所示 @POST @Produces({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON}) @Path("/do/") public OtherPojo doSomething(MyPOJO pojo) { Pojo用@XmlRootElement注释 然而,当我调用
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/do/")
public OtherPojo doSomething(MyPOJO pojo) {
Pojo用@XmlRootElement注释
然而,当我调用url时,pojo是空的,因此我得到了NPE。
我的pom.xml
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-metainf-services</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
这是在my web.xml中配置的
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.beer.routes</param-value>
</init-param>
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
啤酒路线
我读到我可能需要注册JacksonFeature,但我不知道如何注册。进一步检查后,上面的代码工作正常。 问题是,在调用该类时,我使用小写名称发送负载。 波乔看起来像
private String someString;
public void getSomeString() { ... }
public String setSomeString (String s) {...}
我的有效负载中的问题是我发送的是“someString”而不是“someString”。
这是非常相关的,因为这是我的对象被接收为空的原因
更改有效负载后,错误变为此。
private String someString;
public void getSomeString() { ... }
public String setSomeString (String s) {...}