3

我想在接收 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?

4

0 回答 0