[alibaba/fastjson]String解析为JSONObject,特别是含嵌套结构时,字段名如何大小写不敏感?

2025-11-03 987 views
7

我知道这很操蛋,但某运营商研究院的规范就是这么脑残,非得支持不敏感。

仅一层json结构时好处理,如下代码,利用commons-collections中的CaseInsensitiveMap可实现。

final TypeReference<CaseInsensitiveMap<String, Object>> typeReference = new TypeReference<CaseInsensitiveMap<String, Object>>(){};
CaseInsensitiveMap<String, Object> test = JSON.parseObject("", typeReference);

但涉及多层json结构时,嵌套对象又都解析为JSONObject里默认的HashMap或LinkedHashMap,它们是大小写敏感的。

想问fastjson有没相关api,可以自定义JSONObject中Map的类型为CaseInsensitiveMap?

回答

3

new HashMap() 的地方,抽象为工厂方法, 然后使用全局配置?

7

https://github.com/alibaba/fastjson/wiki/CustomMapDeserializer

6

这。。。动作神速

0

@wenshao wiki版本貌似应该改成1.2.44开始支持

0

试了下,有点点别扭。期望有下面这样的写法。 我研究下源码,看能否提PR出点力。