@AllArgsConstructor
@Getter
public enum MemberType {
INTERN("name_intern", 1),
EMPLOYEE("name_employee", 10);
private String name;
private int workingMonth;
}
这是我的枚举。我想将Enum
类转换为带有某些约束的JSON
字符串。
MemberType.INTERN
转换为{id:INTERN, name:"name_intern", workingMonth:10}
。是否有符合上述约束的解决方案?
答案 0 :(得分:1)
您可以像这样使用@JsonFormat
注释:
@JsonFormat(shape=JsonFormat.Shape.OBJECT)
public enum MemberType { ... }
或者您可以像这样使用@JsonValue
注释:
public enum MemberType {
[...]
@JsonValue
public String getName() {
return name;
}
}
或者也许是CustomSerializer
的Enum,您可以找到更多详细信息here。
答案 1 :(得分:0)
如果实现JsonSerializer,则可以自定义序列化。
下面显示一个示例。
@JsonComponent
public final class MediaTypeJsonComponent {
public static class Serializer extends JsonSerializer<MemberType> {
@Override
public void serialize(MemberType value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeStringField("id", value.name());
gen.writeNumberField("workingMonth", value.getWorkingMonth());
gen.writeStringField("name", value.getName());
gen.writeEndObject();
}
}
//
// If you need,write code.
//public static class Deserializer extends JsonDeserializer<Customer> {
//}
}
另一种方法是实现JsonSerialize。
如果需要更多信息,请参考: