【发布时间】:2017-02-15 20:43:46
【问题描述】:
我需要像这样映射:
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
}
但是 Provider 里面有一个枚举:
public class Provider{
String name;
Country country; //Country is an Enum
所以,我创建了一些转换器,但它不起作用。
我将它们添加到网络配置中:
@Override
public void addFormatters (FormatterRegistry registry) {
registry.addConverter(new StringToCountryConverter());
registry.addConverter(new StringToProviderConverter());
}
国家/地区字符串:
public Country convert(String s) {
//It never enters here
}
和提供者的字符串:
@Override
public Provider convert(String[] s) {
//never here
}
所以我的问题是:我做错了什么?我需要将一个字符串映射到 Country,然后再映射到 Provider,但出现此错误:
Could not read document: Can not construct instance of ...Provider: no suitable constructor found, can not deserialize from Object value...
Provider 有这个构造函数:
public Provider(String name, String country)
public Provider(String name, Country country)
任何线索,将不胜感激。谢谢!
【问题讨论】:
标签: java json spring spring-mvc