Я хочу десериализовать этот JSON «{\" m \ ": {\" Test \ ": {\" nombre \ ": \" jose \ ", \" apellidos \ ": \" jose \ ", \ edad \": 30}}} "в PersonaContainer.JSON HashMap deserialization
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;
}
}
Тогда я, создать объект персону и поместить его внутри персоны контейнера со следующим кодом
public class MyJSONTest {
public static void main(String args[]) {
ObjectMapper mapper = new ObjectMapper();
Map m = new HashMap<String,persona>();
Persona p = new Persona();
p.setNombre("jose");
p.setApellidos("jose");
p.setEdad(30);
m.put("Test", p);
PersonaContainer per = new PersonaContainer();
per.setM(m);
//convert Map to json string
try {
System.out.println(mapper.writeValueAsString(per));
} catch (IOException e) {
e.printStackTrace();
}
// convert json to Map
String json = "{\"m\":{\"Test\":{\"nombre\":\"jose\",\"apellidos\":\"jose\",\"edad\":30}}}";
try {
PersonaContainer pers = mapper.readValue(json, PersonaContainer.class);
Persona per1 = (Persona) pers.getM().get("Test");
System.out.println(per1.getNombre());
} catch (Exception e) {
e.printStackTrace();
}
}
}
После сериализации, я использую ObjectMapper получить десериализации JSON в к PersonaContainer объекта, но когда я пытаюсь получить «Test» от HashMap «м» и бросайте его Person объекта я получаю эту ошибку:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to persona
at MyJSONTest.main(MyJSONTest.java:52)
какие-либо советы, пожалуйста?
Не используйте необработанные типы. –
В 'PersonaContainer' атрибут' m', его получатель и его сеттер все должны использовать 'Map'. –
Хорошо, я понимаю, он отлично работает, но если я продюсирую персону из humano @FedericoPeraltaSchaffner – Jose