问题类似于this one,但我有一个不同的问题。
外部系统使用整数字段作为消息类型向我们发送消息。
public enum MessageType {
MEANINGFUL_NAME_1(1),
MEANINGFUL_NAME_2(2),
...
MEANINGFUL_NAME_N(N);
@JsonCreator
public static MessageType byCode(int code) { ... }
}
为了便于阅读,枚举的定义如下:
@JsonTypeInfo(
use = Id.NAME,
include = As.EXISTING_PROPERTY,
property = "message_type",
visible = true
)
@JsonSubTypes({
@Type(value = SpecificMessageType1.class, name = "1"),
@Type(value = SpecificMessageType2.class, name = "2"),
@Type(value = SpecificMessageType3.class, name = "3"),
})
public abstract class Message {
//...
但杰克逊仍然强制在其映射中使用整数值:
@JsonSubTypes({
@Type(value = SpecificMessageType1.class, name = "MEANINGFUL_NAME_1"),
@Type(value = SpecificMessageType2.class, name = "MEANINGFUL_NAME_2"),
@Type(value = SpecificMessageType3.class, name = "MEANINGFUL_NAME_3"),
})
问题:是否可以让jackson在其映射中使用枚举值名称? (不构建自定义反序列化器)。
这样的事情:
def mainscreen():
main.geometry("700x500+%d+%d"%(screensize[0]/2-350,screensize[1]/2-250)) #geometry command
notificationson=tkinter.BooleanVar().set(True)
menubar=Menu(main)
notificationmenu=Menu(menubar,tearoff=0)
notificationmenu.add_checkbutton(label="Notifications", onvalue=True,offvalue=False,variable=notificationson)
menubar.add_cascade(label="Notifications",menu=notificationmenu)
main.config(menu=menubar) #applies the menu to the window