Jordi:
Estoy codificación de un servicio de Primavera-arranque y estoy usando Jackson ObjectMapper
con el fin de mango con mis jsons.
Necesito dividir un JSON como esto:
{
"copy": {
"mode": "mode",
"version": "version"
},
"known": "string value",
"unknown": {
"field1": "sdf",
"field2": "sdfdf"
},
"unknown2": "sdfdf"
}
Es decir, mi frijol es la siguiente:
public class MyBean {
private CopyMetadata copy;
private String known;
private Object others;
}
Me gustaría para rellenar los campos conocidos de MyBean
propiedades, y mover las otras propiedades desconocidas dentro de MyBean.others
la propiedad.
Propiedades conocidas son que se colocan como dentro del campo MyBean
.
¿Algunas ideas?
Vaibhav Gupta:
Una posible solución a este problema es utilizar las anotaciones Jackson @JsonAnyGetter and @JsonAnySetter
Su modelo Mybean.class debería ser algo como esto y que debería funcionar
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
public class MyBean {
private CopyMetadata copy;
private String known;
private Map<String, Object> others = new HashMap<>();
public CopyMetadata getCopy() {
return copy;
}
public void setCopy(CopyMetadata copy) {
this.copy = copy;
}
public String getKnown() {
return known;
}
public void setKnown(String known) {
this.known = known;
}
public Map<String, Object> getOthers() {
return others;
}
public void setOthers(Map<String, Object> others) {
this.others = others;
}
@JsonAnyGetter
public Map<String, Object> getUnknownFields() {
return others;
}
@JsonAnySetter
public void setUnknownFields(String name, Object value) {
others.put(name, value);
}
}