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

在尝试获取JSON请求并对其进行处理时,我遇到以下错误:

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

以下是我试图发送的JSON:

{
“苹果豆”:[
{
“苹果”:“绿苹果”
},
{
“苹果”:“红苹果”
}
]
}

在控制器中,我有以下方法签名:

@RequestMapping(“showApples.do”)
公共字符串getApple(@RequestBody final AllApplesDO applesRequest){
//方法代码
}

AllApplesDO是ApplesDO的包装器:

公共类AllApplesDO{
私有列表<ApplesDO>ApplesDO;
公共列表<ApplesDO>getApplesDO(){
返回applesDO;
}
public void setApplesDO(列表<ApplesDO>ApplesDO){
this.applesDO=applesDO;
}
}

ApplesDO:

公共类ApplesDO{
私人串苹果;
公共字符串getApple(){
还苹果;
}
公共void setApple(字符串appl){
这个苹果=苹果;
}
公共应用程序DO(自定义类型自定义){
//构造代码
}
}

我认为Jackson无法将JSON转换为子类的Java对象。请帮助Jackson将JSON转换为Java对象的配置参数。我使用的是Spring框架

编辑:在上面的示例类中包含导致此问题的主要错误-请查看可接受的答案以获得解决方案

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

实际上,问题出在ApplesDO类中:

公共类ApplesDO{
私人串苹果;
公共字符串getApple(){
还苹果;
}
公共void setApple(字符串apple){
这个苹果=苹果;
}
公共应用程序DO(自定义类型自定义){
//构造代码
}
}

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

公共类ApplesDO{
私人串苹果;
公共字符串getApple(){
还苹果;
}
公共void setApple(字符串apple){
这个苹果=苹果;
}
公共应用程序DO(自定义类型自定义){
//构造代码
}
//引入虚拟构造函数
公共应用程序do(){
}
}

发表评论