È necessario aggiungere annotazioni al proprio tipo con l'annotazione @JsonTypeInfo
e configurare la modalità di serializzazione delle informazioni sul tipo. Consultare this page come riferimento.
Esempio:
public class JacksonClassInfo {
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "__class")
public static class Bean {
public final String field;
@JsonCreator
public Bean(@JsonProperty("field") String field) {
this.field = field;
}
@Override
public String toString() {
return "Bean{" +
"field='" + field + '\'' +
'}';
}
}
public static void main(String[] args) throws IOException {
Bean bean = new Bean("value");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(bean);
System.out.println(json);
System.out.println(mapper.readValue(json, Bean.class));
}
}
uscita:
{
"__class" : "stackoverflow.JacksonClassInfo$Bean",
"field" : "value"
}
Bean{field='value'}
fonte
2014-06-28 06:59:14
Spring usa Jackson per impostazione predefinita, in modo da controllare il progetto Jackson: https://github.com/FasterXML/jackson-databind non ho potuto trovare qualcosa a prima vista però –