java - 使用 Jersey 和 Moxy 编码 java POJO

标签 java rest jersey-2.0 moxy

我有一个基于 REST 的 Web 应用程序,它基本上处理请求并以 JSON 格式发回响应。非常基本的东西。

为此,我使用这些依赖项,只是为了澄清:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.23.2</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.23.2</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
    <version>2.23.2</version>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>2.7.2</version>
</dependency>

与其深入研究代码,不如让我在这里概述基本前提:

  • Jersey2 用于 REST 处理
  • 我的方法(@Produces json)返回的结果是一个包含对象的 javax.ws.rs.core.Response
  • 所述对象类用 @XmlAccessorType(XmlAccessType.FIELD) 进行注释

细节不多,但希望我们不需要更多。

我遇到的问题是返回的 json,特别是一个名为“type”的字段。这是一个例子:

{"type":"getPersonResult","processingTime":19,"person":{"stamPersonPID":170715,"cpr":"1223344556","fornavn":"Ulrik","efternavn":"Jørgensen","foedselsdato":"1901-01-24T00:00:00+01:00","vejnavn":"Vermindsgade","husnummer":"382C","postnummer":"1160","postDistrikt":"København K"},"encryptedPersonIdentifier":"er8xGcWCviTyP2LeIquzYA%3D%3D"}

看到第一个“类型”字段了吗?好吧,我该如何摆脱它?它不是我的模型的一部分(正在返回的对象),就像 Moxy 会自动附加它一样。

我尝试添加一个“类型”字段并使用 @XmlTransient 对其进行注释,但 Moxy 会忽略它并输出一个类型字段。

如何避免该字段出现在我的 json 响应中?

-迈克尔

最佳答案

遵循 this answer 中的建议我设法删除了类型字段。

具体来说,我将 @XmlType(name="") 注释添加到我的响应对象中。这解决了问题。

关于java - 使用 Jersey 和 Moxy 编码 java POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51321527/

相关文章:

php - 使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要卡参数

javascript - 在调用 REST 端点之前进行身份验证

java - Jersey 客户端的 URL 编码问题

java - Java 是否有一种有效的方法在 StringBuilder 上执行多个正则表达式 ReplaceAll 操作?

java - Java 中的参数化类型不匹配

java - 从 shell 脚本调用 JMX MBean 方法

eclipse - 在Eclipse中运行没有web.xml的gradle jersey 2.0 Web应用程序

java - 如何在 java 中调用 PostgreSQL 函数?

xml - vb.net 中的 REST 调用 : how to pass the key "file" that works in cURL

java - MULTIPART_FORM_DATA : No injection source found for a parameter of type public javax. ws.rs.core.Response