Java JsonMappingException:找不到适合类型[simple type,class com.fasterxml.jackson.databind.node.ObjectNode]的构造函数

Java JsonMappingException:找不到适合类型[simple type,class com.fasterxml.jackson.databind.node.ObjectNode]的构造函数,java,json,jackson,objectmapper,Java,Json,Jackson,Objectmapper,我已经阅读了,但找不到ObjectNode类的解决方案 通过阅读 我知道您必须在mapper中注册对象,但在调用web服务时,我还没有创建任何ObjectMapper类 mapper.registerModule(new GeoModule()); 我试图调用我的POJO(ReportQueryData.java)的web服务,它包含ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode)实例变量 ReportQueryData.ja

我已经阅读了,但找不到
ObjectNode
类的解决方案

通过阅读 我知道您必须在mapper中注册对象,但在调用web服务时,我还没有创建任何ObjectMapper类

mapper.registerModule(new GeoModule());
我试图调用我的POJO(
ReportQueryData.java
)的web服务,它包含
ObjectNode
(com.fasterxml.jackson.databind.node.ObjectNode)实例变量

ReportQueryData.java

import com.fasterxml.jackson.databind.node.ObjectNode;

public class ReportQueryData {
    private ObjectNode parentsData;

    public ObjectNode getParentsData() {
        return parentsData;
    }

    public void setParentsData(ObjectNode parentsData) {
        this.parentsData = parentsData;
    }
}
现在我正在调用请求中包含ReportQueryData的web服务,我面临以下异常

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.fasterxml.jackson.databind.node.ObjectNode]: can not instantiate from JSON object (need to add/enable type information?)
[INFO] [talledLocalContainer]  at [Source: org.apache.catalina.connector.CoyoteInputStream@3da45801; line: 1, column: 155] (through reference chain: com.atlassian.qtm.model.ReportQueryData["parentsData"])
[INFO] [talledLocalContainer]   at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
[INFO] [talledLocalContainer]   at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:740)
[INFO] [talledLocalContainer]   at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)

您必须像这样为这个类编写默认构造函数

public ReportQueryData (){

}
编辑::尝试将该类包装在您的中并使用您的类

 class A{

    A(String s){

    }
}

class B extends A{

    B(){
        super("str");
    }
}

您必须像这样为这个类编写默认构造函数

public ReportQueryData (){

}
编辑::尝试将该类包装在您的中并使用您的类

 class A{

    A(String s){

    }
}

class B extends A{

    B(){
        super("str");
    }
}

我并没有在ReportQueryData中声明任何构造函数,所以默认情况下编译器为我提供默认构造函数。我在ObjectNode中遇到了一个问题,因为ObjectNode并没有默认构造函数HMM,所以在该类中必须有默认构造函数,因为它从java的反射API调用。如果这不是您的类,则编写自己的类,并从
ObjectNode
扩展它,然后使用该类查看我的编辑以了解我的建议我没有在ReportQueryData中声明任何构造函数,因此默认情况下,编译器为我提供默认构造函数。我在ObjectNode中遇到了一个问题,因为ObjectNode并没有默认构造函数HMM,所以在该类中必须有默认构造函数,因为它从java的反射API调用。如果这不是您的类,那么编写您自己的类,并从
ObjectNode
扩展它,然后使用该类查看我的编辑以了解我的建议