java - 使用 Jersey 和 Moxy 编组 java POJO
问题描述
我有一个基于 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 响应中?
-迈克尔
解决方案
通过遵循此答案中的建议,我设法删除了 type 字段。
具体来说,我将 @XmlType(name="") 注释添加到我的响应对象中。这解决了问题。
推荐阅读
- excel - excel vba卡在某个点
- c++ - 我在 C++ 中的窗口表单功能中的文本框有问题
- c++ - 通过左移,可以将 1 设置为零
- visual-studio-code - 用于创建 dotnet .vscode 文件夹的关键字或 CLI
- c++ - 是否可以在没有 QApplication 的情况下使用 QML 和 QtQuick?
- r - 识别文件夹名称中的字符串以创建变量 (stringi r)
- python-3.x - python tk tkinter 多个画布在我的可滚动框架中买不起
- floating-point - 如何检测某些东西的大小是否因浮点精度缺陷而改变?
- prolog - 过滤 Prolog 规则结果
- brightway - Brightway ExcelImporter 无法进行新的生物圈交换