Jackson数据库大小写不敏感

您所在的位置:网站首页 mysql大小写区分 Jackson数据库大小写不敏感

Jackson数据库大小写不敏感

2023-05-27 03:32| 来源: 网络整理| 查看: 265

如何反序列化包含不区分大小写的枚举值的JSON字符串?(使用Jackson数据库)

JSON字符串:

[{"url": "foo", "type": "json"}]

我的Java POJO:

public static class Endpoint { public enum DataType { JSON, HTML } public String url; public DataType type; public Endpoint() { } }

在本例中,使用"type":"json"反序列化JSON将在"type":"JSON"工作的地方失败。但我希望"json"也能因为命名约定的原因而工作。

序列化POJO还会导致大写"type":"JSON"

我想使用@JsonCreator和@JsonGetter:

@JsonCreator private Endpoint(@JsonProperty("name") String url, @JsonProperty("type") String type) { this.url = url; this.type = DataType.valueOf(type.toUpperCase()); } //.... @JsonGetter private String getType() { return type.name().toLowerCase(); }

而且起作用了。但我想知道是否有更好的解决方案,因为在我看来这是一个黑客。

我也可以编写一个自定义反序列化器,但是我得到了许多使用枚举的不同POJO,这将很难维护。

有人能提出一种更好的方法来用正确的命名约定来序列化和反序列化枚举吗?

我不希望我的爪哇的枚举是小写的!

下面是我使用的一些测试代码:

String data = "[{\"url\":\"foo\", \"type\":\"json\"}]"; Endpoint[] arr = new ObjectMapper().readValue(data, Endpoint[].class); System.out.println("POJO[]->" + Arrays.toString(arr)); System.out.println("JSON ->" + new ObjectMapper().writeValueAsString(arr));


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3