[英]How to serialize and deserialize Java Enums as JSON objects with Jackson
鑒於Enum:
public enum CarStatus {
NEW("Right off the lot"),
USED("Has had several owners"),
ANTIQUE("Over 25 years old");
public String description;
public CarStatus(String description) {
this.description = description;
}
}
我們如何設置它,以便傑克遜可以將此枚舉的實例序列化和反序列化為以下格式。
{
"name": "NEW",
"description": "Right off the lot"
}
默認是簡單地將枚舉序列化為字符串。 例如"NEW"
。
JsonFormat
注釋使Jackson將枚舉作為JSON對象取消。 JsonNode
的靜態構造JsonNode
並使用JsonNode
注釋所述構造@JsonCreator
。 這是一個例子。
// 1
@JsonFormat(shape = JsonFormat.Shape.Object)
public enum CarStatus {
NEW("Right off the lot"),
USED("Has had several owners"),
ANTIQUE("Over 25 years old");
public String description;
public CarStatus(String description) {
this.description = description;
}
// 2
@JsonCreator
public static CarStatus fromNode(JsonNode node) {
if (!node.has("name"))
return null;
String name = node.get("name").asText();
return CarStatus.valueOf(name);
}
// 3
@JsonProperty
public String getName() {
return name();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.