繁体   English   中英

使用POJO和Enum将JSON转换为Spring Controller

[英]JSON to Spring Controller with POJO and Enum

我需要映射这样的东西:

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

因此,我创建了一些转换器,但是它不起作用。

我将它们添加到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

}

所以我的问题是:我在做什么错? 我需要将字符串映射到“国家/地区”,然后再映射到“提供者”,但是出现此错误:

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() {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM