【发布时间】:2016-05-16 18:32:55
【问题描述】:
我将 jackson 添加到我的 rest jersey 项目中,因为 jersey 的默认 json 映射器在列表元素大小为 1 时提供 JSON 对象,并在元素大小为 2 或更大时提供 JSON 数组。
所以 jackson 与该部分配合得很好,但是 jersey 的默认 json 映射器(idk 是默认值)可以给我一个名为 @type 的属性,当实现 jackson 时,该属性不会添加到 JSON 返回中。
在我使用之前:@XmlRootElement 中的@XmlType(name = "TypeName") 现在我正在尝试使用@JsonTypeInfo,@JsonTypeName 使用 jackson 2.5.4 和 2.22.2 但没有成功。
如何添加@type 属性?
编辑1:(添加web.xml)
在 web.xml 我有这个:
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.webservice</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
编辑 2:(添加杰克逊版本)
jackson-jaxrs-json-provider:2.7.4
jersey-media-json-jackson:2.22.2
jackson-annotations:2.7.4
jackson-jaxrs-base:2.7.4
jackson-databind:2.7.4
jackson-core:2.7.4
jackson-module-jaxb-annotations:2.7.4
jersey-entity-filtering:2.22.2
jersey-common:2.22.2
【问题讨论】:
-
你用的是什么服务器?
-
我正在使用 JBoss AS 7.1.1
-
您是否进行过任何确认检查以查看您的 Jackson 2.x 是否正在使用? AFAIK,Jackson 1.x 是 JBoss 7 中的默认 JSON 提供程序
-
当我尝试实现 Jackson 时,服务器抛出了诸如“方法未找到异常”之类的错误,我必须添加更多的 pom 依赖项才能使其工作。如何测试版本?
-
您是否添加了jackson-jaxrs-json-provider?或者只是杰克逊数据绑定?您需要 jaxrs 提供程序,并且需要在您的 jaxrs 应用程序中注册 JacksonJsonProvider。
标签: java json rest jakarta-ee jackson