Jackson Feature ACCEPT_SINGLE_VALUE_AS_ARRAY不适用于注释

时间:2017-10-16 23:04:01

标签: java rest jackson

我希望能够通过POST内容调用我的api

{
  "property1" : "value1",
  "property2" : "value2"
}

OR

[{
  "property1" : "value1",
  "property2" : "value2"
}]

为此我用

注释了java类
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)

public class MyClass {



    private String porperty1;
    private String property2;

    public MyClass() {
        super();
        // TODO Auto-generated constructor stub
    }


    public MyClass(String porperty1, String property2) {
        super();
        this.porperty1 = porperty1;
        this.property2 = property2;
    }


    public String getPorperty1() {
        return porperty1;
    }


    public void setPorperty1(String porperty1) {
        this.porperty1 = porperty1;
    }


    public String getProperty2() {
        return property2;
    }


    public void setProperty2(String property2) {
        this.property2 = property2;
    }

}

在servlet中我有这样的api

Response myAPI(Collection<MyClass> reqs, @Context HttpServletResponse httpResponse, @Context SecurityContext securityContext) {

}

但是我继续使用第一个请求类型获得内部服务器错误500.

我已经尝试将jackson = annotations版本从2.6.0更新到2.7.0,但它似乎没有在任何版本中工作。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.0</version>
</dependency>

注意:我的POM中还有其他jackson依赖项,例如jackson-databind和jackson-core,仍然指向2.6.4(和jackson-dataformat-xml指向2.6.3)。我无法更新这些版本。考虑到我正在尝试使用更高版本的jackson-annotations,这会有任何问题吗?

1 个答案:

答案 0 :(得分:1)

您需要在实际属性上使用该注释,而不是包含属性的POJO。