Jersey 无法将 json 请求映射到类

2024-01-23

我能够使用 Json 输出运行 Jersey,并且能够使用 Json 映射获取“GET”请求,没有任何问题。

我还有一些 JSON 方法,它们是“POST”方法,它们映射到 Java 类,就像这个方法一样 -

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
@Path("/post")
public String postPerson(Person pers) 

供您参考,我正在遵循指南here https://www.nabisoft.com/tutorials/java-ee/producing-and-consuming-json-or-xml-in-java-rest-services-with-jersey-and-jackson or here https://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/

在对这些发出有效的发布请求后,他们都开始抛出以下错误 -

我的 Maven 依赖项 pom.xml 是问题末尾的文件 -

exception

javax.servlet.ServletException: java.lang.NullPointerException
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.NullPointerException
newa.PersonResource.postPerson(PersonResource.java:31)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:267)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

人类 -

  @JsonInclude(Include.NON_EMPTY)
public class Person {    
private String firstName;
private String lastName;
public void setLastName(String lastName) {
    this.lastName = lastName;
}
public String getLastName() {
    return lastName;
}
public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
}

我使用邮递员(Chrome 扩展)发送的数据类似于 -

我的 pom.xml 文件 -

 <dependencies>


    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>



    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.24</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.24</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-processing</artifactId>
        <version>2.24</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.24</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-sse</artifactId>
        <version>2.24</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.8</version>
        <type>jar</type>
    </dependency>
</dependencies>

从邮递员屏幕截图的外观来看,当您实际上想要 json 时,看起来您正在发送表单数据(除非这是您可以将发布数据输入到 POSTMAN 中的新方法。我刚刚尝试过,只能输入表单数据这边走)。

前往邮递员,点击body选项卡,单击raw单选按钮,然后选择application/json从右侧的下拉菜单中。从那里,将您的正文输入为 json,如下所示:

{"firstName": "Bill", "lastName": "Loney"}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey 无法将 json 请求映射到类 的相关文章

随机推荐

  • HTML 5中是不是不需要像HTML那样关闭标签呢?

    HTML 5中是不是不需要像HTML那样关闭标签呢 或者是 W3C 验证器中的错误 为什么此代码在 W3C 验证器中有效 p Some Text 如果它在 HTML5 中真的有效 我会感到惊讶 但是在 HTML5 中保持这种行为有效有什么好
  • 如何共享 Maven 原型?

    我创建了一个 Maven 原型 我想在我的公司内分享它 为此 我将其部署到我们的 Nexus 服务器上 并且可以从那里使用它 但这有点不方便 因为它似乎不在其他计算机上已知原型的目录中 解决方法是像这样使用它 mvn archetype g
  • 如何使用 firestore 运行地理“附近”查询?

    Firebase 中的新 Firestore 数据库本身支持基于位置的地理查询吗 即查找 10 英里内的帖子 或查找 50 个最近的帖子 我看到有一些现有的实时 firebase 数据库项目 例如 geofire 这些项目也可以适用于 fi
  • 将 JavaFX WebView 调整为文档正文所需的最小大小

    我正在为我的项目编写一个 JavaFX 自定义对话框 我需要一种变体但快速的模式来显示对话框内容 我了解controlsFX 实际上我正在使用它 但我想在 WebView 中显示内容 这样它会更可控 问题是关于 WebView 的大小我想找
  • C 有字符串类型吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我最近从 Java 和 Python
  • 有什么理由使用 threading.Lock 而不是 multiprocessing.Lock 吗?

    如果一个软件项目支持多处理已反向移植到的 Python 版本 是否有任何理由使用threading Lock over multiprocessing Lock 会一个multiprocessing锁也不是线程安全的吗 就此而言 是否有理由
  • 如何清理 React 事件处理程序中的 setTimeout/setInterval ?

    我怎样才能清理像这样的函数setTimeout or setInterval在 React 的事件处理程序中 还是说没有必要这样做 import React from react function App return
  • 无法连接到 MongoDB errno:61

    我使用 macports 安装了 MongoDB 并尝试运行mongo命令以启动 mongo shell 我收到以下错误 warning Failed to connect to 127 0 0 1 27017 reason errno 6
  • Lua - 执行存储在表中的函数

    我能够将函数存储到表中 但现在我不知道如何调用它们 最终表将有大约 100 个调用 因此如果可能的话 我想像在 foreach 循环中一样调用它们 谢谢 该表的定义方式如下 game level hints game level hints
  • Sikuli - 切换监视器和分辨率使脚本无效

    我确实经常在笔记本电脑屏幕和外部 24 英寸显示器之间切换 并且我确实注意到 如果我在笔记本电脑上拍摄快照 那么如果我在连接到 24 英寸显示器时运行脚本 测试将不再正常工作 如果我反过来 从 24 英寸显示器上拍摄快照 然后在笔记本电脑显
  • openssl.cnf 文件的正确位置

    我有一个Ubuntu系统 并且已经安装了OpenSSL 现在我想更改配置文件 我搜索了我的文件夹并找到了配置文件的以下位置 我应该使用哪一个来进行更改的主要 正确的 我需要在这里添加一个引擎 任何帮助 将不胜感激 以下是地点 usr loc
  • 有哪些算法可以比较两个字符串的相似程度?

    我需要比较字符串来确定它们是否代表相同的东西 这与人类输入的案例标题有关 其中缩写和其他小细节可能有所不同 例如 考虑以下两个标题 std string first Henry C Harper v The Law Offices of H
  • 在没有安装jruby的情况下在tomcat上执行rake任务

    我的 Rails 项目在 Warbler 的帮助下部署到 tomcat 但我需要能够在该服务器上运行 rake 任务 敬请关注 我希望在Warbler 1 4中有这个功能 社区成员 Jake Goulding 在这方面做了一些出色的工作 在
  • WPF 按钮 IsEnabled 基于 ComboBox 选择覆盖默认样式

    我有一个按钮正在查看 2 个组合框 以确保它们在启用之前具有值 问题是我这样做的方式是覆盖我的主题项目中声明的默认样式
  • 如何在Scala中分割字符串但保留与正则表达式匹配的部分?

    我的问题与拆分字符串 包括正则表达式匹配 https stackoverflow com questions 8844256 split string including regular expression match但对于斯卡拉来说 不
  • 导出不带前缀变量的 conda 环境,该变量显示可执行文件的本地路径

    为了在我的团队中进行可重复的改进 我在新创建的存储库中导出了一个 conda 环境文件 该文件正在运行conda env export gt environment yml 我的想法是让我的同事下载存储库并运行conda env creat
  • Oracle Data Provider 到 CLR 类型的映射

    在哪里可以找到 ODP 到 CLR 类型映射的列表 在 Oracle 数据库上 NUMBER 9 0 类型在 NET 应用程序中作为 MS Oracle 驱动程序中的 System Decimal 出现 但在 ODP 驱动程序中作为 Sys
  • Struts2 jquery插件用整个页面的HTML响应ajax请求

    我正在尝试在某些表单上使用 Struts2 jquery 插件进行 ajax 请求 但我在页面响应方面遇到问题 struts 操作已验证并正确执行 但是当 jquery 获取响应时 它将响应设置为整个页面的 HTML 它将响应放在正确的位置
  • 在 MongoDB 中将一天增加到日期

    如何在文档中将日期增加 7 天 而无需手动设置日期 Collection Data id ObjectId 5e302f83edd1fd00125abbf9 dateTransferred 2020 01 26T00 00 00 000 0
  • Jersey 无法将 json 请求映射到类

    我能够使用 Json 输出运行 Jersey 并且能够使用 Json 映射获取 GET 请求 没有任何问题 我还有一些 JSON 方法 它们是 POST 方法 它们映射到 Java 类 就像这个方法一样 POST Consumes Medi