5
如何在所有序列化對象中包含類名?例如。將「_class:'MyClass'」添加到輸出值。是否有一些全球性的設置?我不想添加任何註釋pojo類。包含傑克遜序列化的所有對象中的類名稱
我使用它與spring4 webmvc @ResponseBody(只有JSON格式)。
如何在所有序列化對象中包含類名?例如。將「_class:'MyClass'」添加到輸出值。是否有一些全球性的設置?我不想添加任何註釋pojo類。包含傑克遜序列化的所有對象中的類名稱
我使用它與spring4 webmvc @ResponseBody(只有JSON格式)。
您需要使用@JsonTypeInfo
批註註釋您的類型,並配置應如何序列化類型信息。請參閱this page以供參考。
例子:
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));
}
}
輸出:
{
"__class" : "stackoverflow.JacksonClassInfo$Bean",
"field" : "value"
}
Bean{field='value'}
多一點人類可讀的類名,你可以使用「JsonTypeInfo.Id.NAME」 – Calebj
Spring使用傑克遜在默認情況下,因此檢查項目傑克遜:https://github.com/FasterXML/jackson-databind我做不到找到任何東西雖然 –