Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Jersey 2.x使用Pojo作为POST的参数_Json_Maven_Tomcat_Pojo_Jersey 2.0 - Fatal编程技术网

Json Jersey 2.x使用Pojo作为POST的参数

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注释 然而,当我调用

我在尝试使用POJO作为参数时遇到了一些NPE问题。 我正在使用默认配置将war maven生成的代码部署到Tomcat7中

我的方法的签名如下所示

@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) {...}