首页 > 解决方案 > 如何构造枚举不区分大小写?这样当我将 json 转换为类对象时,它看不到对象的情况

问题描述

我想拥有我所有的枚举对象资本。如何使它不区分大小写。

HTTP 正文到 JSON 节点,然后节点到类对象

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

json有小写字符串“位置”,我想用下面枚举的位置映射该类包含一个枚举,它是:

public enum WhatsAppMessageType {

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

标签: javajsonplayframework

解决方案


如果您使用的是杰克逊……我认为是的,有多种解决方案

1. 对您的@JsonProperty 使用注释:

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

2.编写自定义JsonDeserializer:

有了JsonDeserializer你可以实现任何你想要的逻辑

3.为您的字段使用@JsonFormat注释:

@JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES) 

4. 以编程方式为所有字段设置格式:

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

推荐阅读