2017-02-15 58 views
0

我需要映射是这样的:JSON春控制器与POJO和枚举

JSON:

{'field1': 'value1', 'provider': {'name': 'nameprov', 'country': 'CODE'}} 

到Spring MVC的控制器:

@ResponseBody 
Dummy getVal(@RequestBody MyCriteria criteria) { 

凡MyCriteria,其实,是一个延伸的类:

public abstract class MyCriteria { 
    String field1; 
    //Getter and setter 
    Provider provider; 
    //Getter and setter 
} 

但提供者有一个enum里面:

public class Provider{ 
    String name; 
    Country country; //Country is an Enum 

所以,我创建了一些转换器,但它不起作用。

我加入他们的web配置:

​​

字符串国家:

public Country convert(String s) { 
    //It never enters here 
} 

和字符串提供者:

@Override 
public Provider convert(String[] s) { 

    //never here 

} 

所以我的问题是:我在做什么错误?我需要映射一个字符串,国家,后来到供应商,但我有此错误:

Could not read document: Can not construct instance of ...Provider: no suitable constructor found, can not deserialize from Object value... 

提供商有这样的构造:

public Provider(String name, String country) 
public Provider(String name, Country country) 

任何线索,将感激不尽。谢谢!

回答

1

你应该创建一个默认的构造函数Provider类,像

public Provider() {} 
+0

哦!谢谢!另外,正如我怀疑的那样,所有的转换器都没有必要实现正确的映射。 – MarcosTonina