Java JSON哈希映射反序列化

Java JSON哈希映射反序列化,java,json,jackson,Java,Json,Jackson,我想反序列化这个JSON“{\'m\”:{\'Test\”:{\'nombre\”:“jose\”,“apellidos\”:“jose\”,“edad\”:30}}}到PersonalContainer中 public class Persona { private String nombre; private String apellidos; private int edad; ... getters and setters; } pu

我想反序列化这个JSON“{\'m\”:{\'Test\”:{\'nombre\”:“jose\”,“apellidos\”:“jose\”,“edad\”:30}}}到PersonalContainer中

    public class Persona {
    private String nombre;
    private String apellidos;
    private int edad;

    ... getters and setters;

}

    public class PersonaContainer {

    private Map m = new HashMap<String,Persona>();

    public Map getM() {
        return m;
    }

    public void setM(Map m) {
        this.m = m;
    }   

}
有什么建议吗?

仅供参考

private Map m = ...;
Jackson不知道您希望映射的键和值是什么类型的。因此,它使用默认值。对于常规对象,它使用
LinkedHashMap
。换句话说,它将反序列化

{"nombre":"jose","apellidos":"jose","edad":30}
进入
LinkedHashMap
实例。当您尝试将它用作
角色时,它会失败,出现
ClassCastException

相反,不要使用原始类型。使用正确的泛型参数声明
映射

private Map<String, Persona> m = ...;
私有映射m=。。。;

请注意,Spring将把相应的JSON(
m
)反序列化为
LinkedHashMap
,而不是
HashMap
。如果您想要一个
HashMap
,请声明类型为
HashMap

的字段,不要使用原始类型。在
PersonalContainer
中,属性
m
、其getter和setter都需要使用
Map
。好的,我明白了,它可以正常工作,但如果我从humano扩展persona@FedericoPeraltaSchaffner@Jose再见,谢谢,您知道我在哪里添加了´@JsonTypeInfo'和´@JsonSubTypes'注释,这告诉jackson如何反序列化此类对象@费德里科·佩拉尔塔·沙夫纳
{"nombre":"jose","apellidos":"jose","edad":30}
private Map<String, Persona> m = ...;