JsonMappingException:找不到适合类型[简单类型,类]的构造函数:无法从JSON对象实例化

幸运的穆拉里:

尝试获取JSON请求并处理它时,出现以下错误:

org.codehaus.jackson.map.JsonMappingException:未找到类型[简单类型,类com.myweb.ApplesDO]的合适构造函数:无法从JSON对象实例化(需要添加/启用类型信息吗?)

这是我要发送的JSON:

{
  "applesDO" : [
    {
      "apple" : "Green Apple"
    },
    {
      "apple" : "Red Apple"
    }
  ]
}

在Controller中,我具有以下方法签名:

@RequestMapping("showApples.do")
public String getApples(@RequestBody final AllApplesDO applesRequest){
    // Method Code
}

AllApplesDO是ApplesDO的包装:

public class AllApplesDO {

    private List<ApplesDO> applesDO;

    public List<ApplesDO> getApplesDO() {
        return applesDO;
    }

    public void setApplesDO(List<ApplesDO> applesDO) {
        this.applesDO = applesDO;
    }
}

ApplesDO:

public class ApplesDO {

    private String apple;

    public String getApple() {
        return apple;
    }

    public void setApple(String appl) {
        this.apple = apple;
    }

    public ApplesDO(CustomType custom){
        //constructor Code
    }
}

我认为Jackson无法将JSON转换为子类的Java对象。请提供杰克逊将JSON转换为Java对象的配置参数的帮助。我正在使用Spring Framework。

编辑:在上面的示例类中包括导致此问题的主要错误-请寻找已接受的答案作为解决方案。

幸运的穆拉里:

所以,最后我意识到了问题所在。我怀疑这不是杰克逊的配置问题。

实际上问题出在ApplesDO类中:

public class ApplesDO {

    private String apple;

    public String getApple() {
        return apple;
    }

    public void setApple(String apple) {
        this.apple = apple;
    }

    public ApplesDO(CustomType custom) {
        //constructor Code
    }
}

为该类定义了一个自定义构造函数,使其成为默认构造函数。引入虚拟构造函数使错误消失了:

public class ApplesDO {

    private String apple;

    public String getApple() {
        return apple;
    }

    public void setApple(String apple) {
        this.apple = apple;
    }

    public ApplesDO(CustomType custom) {
        //constructor Code
    }

    //Introducing the dummy constructor
    public ApplesDO() {
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

泽西岛:找不到适合类型[简单类型,类Thing]的构造函数:无法从JSON对象实例化

JsonMappingException:找不到适合类型的构造函数-对于外部对象

JsonMappingException:找不到适合类型的构造函数

用杰克逊反序列化Guava的表会抛出“ JsonMappingException:找不到适合类型的构造函数”

Jackson ObjectMapper无法反序列化POJO,引发异常:找不到类型[...]的合适构造函数:无法从JSON对象实例化

无法从 JSON 字符串实例化 [简单类型,类 org.joda.time.LocalDateTime] 类型的值;没有单字符串构造函数/工厂方法

com.fasterxml.jackson.databind.JsonMappingException:无法构造以下项的实例:poja类找不到合适的构造函数

找不到适合我的使用DI类型的构造函数

找不到适合类型的构造函数(查看组件)

找不到适合实体类型MyImage的合适构造函数

当我们使用枚举时,找不到适合类型的构造函数-Jackson JSON

找不到类型的构造函数

无法实例化类的代理。找不到无参数的构造函数

无法实例化LoginUrlAuthenticationEntryPoint:找不到默认构造函数

无法实例化代理...找不到无参数的构造函数

com.fasterxml.jackson.databind.JsonMappingException:无法从字符串实例化类型[简单类型,类java.time.LocalDateTime]的值

您可以使用无类型对象实例化Java类构造函数吗?

如何通过类类型委托构造函数的实例化?

实体框架异常:找不到适合实体类型“CultureInfo”的构造函数

找不到适合实体类型字符串的合适构造函数

进行EF Core迁移(SmartEnum)时,“找不到适合实体类型的构造函数”

JsonMappingException:找不到合适的构造函数

com.fasterxml.jackson.databind.JsonMappingException:找不到合适的构造函数,无法从Object值反序列化

在静态方法中实例化非静态类(上下文),构造函数以对象类型为参数

B类中构造函数的参数0需要一个找不到A类类型的Bean

从类构造函数实例化对象的集合

找不到适合类型“System.Collections.Generic.IEnumerable`1[TeamCloud.Areas.Identity.Data.TeamCloudUser]”的构造函数

无法从JSON字符串实例化类型的值;没有单字符串构造函数/工厂方法

在运行时使用默认构造函数实例化类型参数化的类