次の形式の 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") は CustomClass.NameVal 型ではなく LinkedHashMap 型になります。
Jackson に CustomClass.NameVal 記述子の型を適切に解析させるにはどうすればよいですか (解析をラップし、Jackson がファイルを読み取った後に LinkedHashMap を明示的に変換するクラスを作成する以外に)。