簡體   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