【发布时间】:2019-11-23 02:38:20
【问题描述】:
我想在序列化期间向响应对象中注入一个字段。是否可以将 "success": "true" 注入 JSON 响应对象?这需要是所有被序列化的父响应对象的通用解决方案。
以对象为例:
public class UserResponse {
private int id;
private String firstName;
private String lastName;
private Organisation organisation;
// getters setters
}
杰克逊应该返回:
{
"success": "true",
"id": 1,
"firstName": "tom",
"lastName": "jeffrey",
"organisation": {
// etc.
}
}
我已经试过了
public class CustomJsonSerializer extends StdSerializer<Object> {
public CustomJsonSerializer() {
this(null);
}
public CustomJsonSerializer(Class<Object> t) {
super(t);
}
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("success", "true");
jsonGenerator.writeObject(o);
jsonGenerator.writeEndObject();
}
}
但是没有成功:
Could not write JSON: Can not start an object, expecting field name (context: Object); nested exception is com.fasterxml.jackson.core.JsonGenerationException: Can not start an object, expecting field name (context: Object)
【问题讨论】:
标签: spring-boot jackson jackson2