Java Jackson功能接受\u单个\u值\u,因为\u数组不适用于注释

Java Jackson功能接受\u单个\u值\u,因为\u数组不适用于注释,java,rest,jackson,Java,Rest,Jackson,我希望能够使用POST内容调用我的api { "property1" : "value1", "property2" : "value2" } 或 为此,我用 @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) public class MyClass { private String porperty1; private String property2; publi

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

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

为此,我用

@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注释,这会有任何问题吗?

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

jackson databind包含注释配置的实现。仅更新jackson annotations工件对您没有帮助。可能此配置未实现以在类型级别工作;如果我有时间的话,我将不得不查看代码。好的,即使在将jackson databind更新到2.7之后,我仍然看到相同的错误。对于req2,除了req1,其他一切都正常。我收到HTTP 500错误。您是否尝试过更新到jackson的最新版本?那就是2.9.2。如果该问题在该版本中仍然存在,那么我将不得不假设此配置尚未实现,无法在类型级别工作。为什么不在Github上为jackson databind发布一个报告呢?嗯,我可以试试。谢谢@jjones。但是如果我需要将整个对象作为一个集合或单个值,该怎么办?我是否创建了一个新类,并将MyClass作为该类的属性,然后对其进行注释?ps:我也尝试过这种方法,即在另一个类中包装MyClass并注释该属性。但即使这样也不能解决问题!不知何故,我认为我对这些杰克逊API的版本是错误的。我想即使是2.7也不支持。我不确定我是否理解你的问题。如果您的意思是对象图顶部的根值,即您正试图反序列化的根值,则此功能根本无法使用。它仅适用于属性。
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.0</version>
</dependency>