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

标签 json maven tomcat pojo jersey-2.0

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

我的方法的签名如下所示。

@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>

我试过 jersey 2.13 和 2.6 和 jackson 2.4

此外,我没有设置应用程序,我的类只有注释

@Path("/somePath/")
public class SomeClass {

这是在我的 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>

我读到我可能需要注册 JacksonFeature,但我不知道该怎么做。

最佳答案

经过进一步审查,上面的代码工作正常。 问题是在调用该类时,我发送的负载名称是小写的。 POJO 看起来像

private String someString;

public void getSomeString() { ... }
public String setSomeString (String s) {...}

我的负载中的问题是我发送了“someString”而不是“SomeString”。 这是非常相关的,因为它是我的对象被接收为 null 的原因。

更改有效负载后,错误更改为此。 Jackson with JSON: Unrecognized field, not marked as ignorable

关于json - Jersey 2.x 使用 Pojo 作为 POST 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791420/

相关文章:

c# - 关于如何在 Try/Catch 异常后忽略 for 循环中的文件的任何建议?

java - 如何使用 japicmp 比较当前和以前构建中生成的 Artifact

java - NoClassDefFound : Scala/xml/metadata

java - 什么会导致 TCP/IP 在不断开连接的情况下丢弃数据包?

Apache ProxyPass 到具有相同 URI 的 2 个不同的 tomcat 服务器

apache - 强制 tomcat 使用 www.domain.com 而不是 domain.com

json - 渐进式 Web 应用程序是否可以将 Web list 嵌入到 html 页面中?

javascript - 树布局 - 链接 - 数据格式

javascript - 使用 javascript 从值中获取特定文本

java - 没有持久性提供者异常(exception)