在Jackson根据官方文档添加自定义序列化程序后,我观察到了略微不同的json输出格式.
这个例子是基于弹簧垫的叉子.
扩展org.springsource.restbucks.WebConfiguration从RepositoryRestMvcConfiguration并重写configureJacksonObjectMapper:
@Override
protected void configureJacksonObjectMapper(ObjectMapper objectMapper) {
final SimpleSerializers serializers = new SimpleSerializers();
serializers.addSerializer(Order.class, new OrderSerializer());
objectMapper.registerModule(new SimpleModule("CustomSerializerModule"){
@Override public void setupModule(SetupContext context) {
context.addSerializers(serializers);
}
});
}
Run Code Online (Sandbox Code Playgroud)
创建类org.springsource.restbucks.order.OrderSerializer.为简洁起见,只需将属性写paid为JSON即可.
public class OrderSerializer extends JsonSerializer<Order> {
@Override
public void serialize(Order value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
jgen.writeStartObject();
jgen.writeBooleanField("paid", value.isPaid());
jgen.writeEndObject();
}
}
Run Code Online (Sandbox Code Playgroud)
在添加OrderSerializer json响应之前,http://localhost:8080/orders/1看起来像:
{
"location": "TAKE_AWAY", …Run Code Online (Sandbox Code Playgroud)