json 如何使用Jackson构造大小写不敏感的枚举?

js5cn81o  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(117)

我想让我所有的枚举对象都大写。如何使其不区分大小写?
HTTP主体到JsonNode,然后节点到类对象:

JsonNode asJson = request().body().asJson();
WhatsappIncomingMessageVO requestVO = JsonParserUtils.fromJson(asJson, WhatsappIncomingMessageVO.class);

JSON有一个字符串“location”,我想用下面枚举的LOCATIONMap它,这个类包含一个枚举,它是:

public enum WhatsAppMessageType {

    TEMPLATE("TEMPLATE"),
    TEXT("TEXT"),
    IMAGE("image"), 
    VIDEO("video"), 
    AUDIO("audio"),
    @JsonProperty("json")
    LOCATION("location");
uyhoqukh

uyhoqukh1#

如果您使用Jackson...我认为是的,有多种解决方案

1.在@JsonProperty中使用annotation:

@JsonAlias({"location", "LOCATION", "Location"})

2.编写自定义JsonToolizer:

使用JsonDeserializer,您可以implement any logic you want

3.字段使用@JsonFormat annotation

@JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)

4.编程设置所有字段的格式:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
klh5stk1

klh5stk12#

mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS, true);

如果您希望枚举值不区分大小写,则需要这样做。

相关问题