Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON到带有POJO和Enum的Spring控制器_Java_Json_Spring_Spring Mvc - Fatal编程技术网

Java JSON到带有POJO和Enum的Spring控制器

Java JSON到带有POJO和Enum的Spring控制器,java,json,spring,spring-mvc,Java,Json,Spring,Spring Mvc,我需要绘制这样的地图: JSON: 到Spring MVC控制器: @ResponseBody Dummy getVal(@RequestBody MyCriteria criteria) { 其中MyCriteria实际上是一个扩展了以下内容的类: public abstract class MyCriteria { String field1; //Getter and setter Provider provider; //Getter and setter } 但提供

我需要绘制这样的地图:

JSON:

到Spring MVC控制器:

@ResponseBody
Dummy getVal(@RequestBody MyCriteria criteria) {
其中MyCriteria实际上是一个扩展了以下内容的类:

public abstract class MyCriteria {
  String field1;
  //Getter and setter
  Provider provider;
  //Getter and setter
}
但提供程序内部有一个枚举:

public class Provider{
  String name;
  Country country; //Country is an Enum
因此,我创建了一些转换器,但它不起作用

我将它们添加到web配置中:

@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...
提供程序具有以下构造函数:

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

如果有任何线索,我们将不胜感激。谢谢

您应该为Provider类创建一个默认构造函数,如

public Provider() {}

哦谢谢此外,正如我所怀疑的,所有转换器都不是实现正确映射所必需的。
public Provider() {}