我想在接收 JSON 时使用@JsonAnySetter 功能来收集未知数,所以我将带注释的方法添加到我的类(使用@XmlRootElement 注释)和
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
到我的 web.xml。这工作正常。
我决定尝试摆脱我的 web.xml。
我把我的班级改成
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("/services")
public class ListingRS extends ResourceConfig {
public ListingRS() {
packages("com.onlineimage.totalproperties");
}
并且除了 @JsonAnySetter 之外的一切都不会被调用。
我尝试添加 getFeatures() 正如我在示例中找到的那样
public ListingRS() {
packages("com.onlineimage.totalproperties");
getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
}
但 getFeatures() 无法识别,我认为它是 Jersey 1.x?
我把它改成
public ListingRS() {
packages("com.onlineimage.totalproperties");
getProperties().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
}
但我没有 JSONConfiguration 的导入,我不知道用 Jersey 2.0 导入什么。另外我不确定 getProperties() 是正确的方法。
对于我正在使用的 Gradle 库
List compileLibraries =['org.glassfish.jersey.core:jersey-common:2.0',
'org.glassfish.jersey.core:jersey-server:2.0']
问题的根源是,我想在我的班级上使用@XmlRootElement 来轻松转换xml,并使用@JsonAnySetter 来处理未知数。如果我不启用 JSONConfiguration.FEATURE_POJO_MAPPING,则永远不会调用 @JsonAnySetter 方法。
假设我在上面没有做任何可怕的错误,如何在没有 web.xml 文件的情况下启用 JSONConfiguration.FEATURE_POJO_MAPPING?