春季杰克逊地图反序列化

时间:2020-02-10 13:23:53

标签: java spring jackson deserialization

我正在通过Spring控制器传递一个看起来像这样的json对象:

{
  "dataset":"myDataset",
  "typeProperties":[
    "myProperty"
  ],
  "stopWords":{
    "de":[ "daß","allem","dem"],
    "fr":["salut"]
  }
}

相应的java对象是:

public class DatasetConfigRequest {
    String dataset = "";
    List<String> typeProperties;
    HashMap<String,ArrayList<String>> stopWords = new HashMap<String,ArrayList<String>>();

//getter and setters

但是当我通过它时,出现以下错误:

JSON parse error: Cannot deserialize instance of `java.util.HashMap<java.lang.Object,java.lang.Object>` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.HashMap<java.lang.Object,java.lang.Object>` out of START_ARRAY token
 at [Source: (PushbackInputStream); line: 1, column: 104] (through reference chain: eu.qanswer.core2.server.controller.payload.dataset.DatasetConfigRequest["stopWords"])]

我知道问题是HashMap的值为ArrayList。但是如何解决呢?

谢谢 D063520

1 个答案:

答案 0 :(得分:0)

创建一个新类并将其命名为stopWords,添加id和list字段,最后将一个字段添加至数据集类,将其命名为stopWords