使用 Jersey 和 Moxy 编组 java POJO
Marshalling java POJO's with Jersey and 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
- 所述对象 class 被注释为 @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"}
看到第一个 "type" 字段了吗?好的,我该如何摆脱它?它不是我模型的一部分(返回的对象),就像 Moxy 自动附加的一样。
我尝试添加一个 "type" 字段并用 @XmlTransient 对其进行注释,但 Moxy 忽略了它并输出了一个类型字段。
如何避免该字段出现在我的 json 响应中?
-迈克尔
按照 this answer 中的建议,我设法删除了类型字段。
具体来说,我将 @XmlType(name="") 注释添加到我的响应对象中。这解决了问题。
我有一个基于 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
- 所述对象 class 被注释为 @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"}
看到第一个 "type" 字段了吗?好的,我该如何摆脱它?它不是我模型的一部分(返回的对象),就像 Moxy 自动附加的一样。
我尝试添加一个 "type" 字段并用 @XmlTransient 对其进行注释,但 Moxy 忽略了它并输出了一个类型字段。
如何避免该字段出现在我的 json 响应中?
-迈克尔
按照 this answer 中的建议,我设法删除了类型字段。
具体来说,我将 @XmlType(name="") 注释添加到我的响应对象中。这解决了问题。