Mix-in Annotations. , POJO :
class Root {
private Data data;
}
class Data {
private String name;
}
MixIn:
interface RootMixIn {
@JsonSerialize(using = DataSerializer.class)
Data getData();
}
, :
class DataSerializer extends JsonSerializer<Data> {
@Override
public void serialize(Data data, JsonGenerator generator, SerializerProvider provider) throws IOException, JsonProcessingException {
generator.writeStartObject();
generator.writeFieldName("name_property");
generator.writeString(data.getName() + " XXX");
generator.writeEndObject();
}
}
, ObjectMapper. :
Data data = new Data();
data.setName("Tom");
Root root = new Root();
root.setData(data);
ObjectMapper mapperWithMixIn = new ObjectMapper();
mapperWithMixIn.addMixInAnnotations(Root.class, RootMixIn.class);
ObjectMapper mapperDefault = new ObjectMapper();
System.out.println("With MIX-IN");
System.out.println(mapperWithMixIn.writeValueAsString(root));
System.out.println("Default");
System.out.println(mapperDefault.writeValueAsString(root));
script :
With MIX-IN
{"data":{"name_property":"Tom XXX"}}
Default
{"data":{"name":"Tom"}}
, ObjectMapper MixIn ObjectMapper RestTemplate.
1
Spring ObjectMapper bean . bean. ? . :
bean mapperWithMixIn .
-, ObjectMapper bean bean RestTemplate-s bean /.