我收到了一个 Json 文件,格式如下:
{
"descriptions": {
"desc1": "someString",
"desc2": {"name":"someName", "val": 7.0}
}
}
我有 POJO:
public class CustomClass {
Map<String, Object> descriptions;
public static class NameVal{
String name;
double val;
public NameVal(String name, double val){...}
}
}
我可以使用以下代码重新创建 json 文件:
CustomClass a = new CustomClass();
a.descriptions = new HashMap<String, Object>();
a.descriptions.put("desc1", "someString");
a.descriptions.put("desc2", new CustomClass.NameVal("someName", 7.0));
new ObjectMapper().writeValue(new File("testfile"), a);
但是,当我在使用中读取对象时:
CustomClass fromFile = new ObjectMapper().readValue(new File("testfile"), CustomClass.class);
那么 fromFile.descriptions.get("desc2") 是 LinkedHashMap 类型而不是 CustomClass.NameVal 类型。
如何让 Jackson 正确解析 CustomClass.NameVal 描述符的类型(除了制作一些包装解析并在 Jackson 读取文件后显式转换 LinkedHashMap 的类)?