Spring 4 Rest Controller抛出JsonMappingException

时间:2017-01-09 07:25:00

标签: java spring rest jackson

我的Java类中有一个属性,返回类型为Map<String,List<Object>,而使用Jackson进行解析时,我遇到异常。有人可以帮我这个吗?

  

org.springframework.http.converter.HttpMessageNotWritableException:   无法写内容:类java.lang.String不是子类型   [收集类型; class java.util.List,包含[simple type,class   java.lang.Object]](通过引用链:   com.test.model [&#34; dropdownModel&#34;]);嵌套异常是   com.fasterxml.jackson.databind.JsonMappingException:Class   java.lang.String不是[集合类型的子类型;类   java.util.List,包含[simple type,class java.lang.Object]]   (通过参考链:com.test.model [&#34; dropdownModel&#34;])

这就是我想用杰克逊解析的bean:

public class AdminModel {
    private Map<String, List<LabelValueModel>> dropdownModel = null;
    public Map<String, List<LabelValueModel>> getDropdownModel() {
        return dropdownModel;
    }
    public void setDropdownModel( Map<String, List<LabelValueModel>> dropdownModel ) {
        this.dropdownModel = dropdownModel;
    }
} 

这是我的休息控制器:

@RequestMapping(value = "/getDropdownValues", method = RequestMethod.POST, headers = { "Accept=application/json" })
public ResponseEntity<AdminModel> getDropdownValues( @RequestBody DropDownModel inModel ) {
    AdminModel responseModel = adminService.getDropdownValues( inModel ); 
    return new ResponseEntity<AdminModel>( responseModel, HttpStatus.OK );
} 

1 个答案:

答案 0 :(得分:0)

我的问题是由于我的地图是Map<String, List<String>>并且我放了("key", "value"),这当然是非法的。它允许它,因为有一点它是Map<String, Object>所以它很好。

更改此项以列出修复我的问题的列表。