[alibaba/fastjson]我用反序列化的时候默认用Map而非JSONObject吗

2025-10-31 99 views
0

最近用Object o = JSON.parseObject(json),String json结构很复杂,我看返回的结构中,Collection的默认是JSONArray,Map的默认是JSONObject,这个逻辑我能改变吗? 我期望的是,不使用JSONArray或者JSONObject,而是使用ArrayList和HashMap替代。 这个有拓展设置或者什么方法实现吗?

回答

9

反序列化的时候支持传入泛型类型 查看 JSON.parseObject() 的其他重载

9

如果我的Json层级深度不固定,格式不一致,就没法使用反序列化传入泛型的方法了。反序列化的对象有可能是HashMap<String, Object>,而这个Object是不固定的,有可能是List,有可能是String,也有可能又是一个 HashMap...

9

其实这个没必要纠结 JSONArray 本身就是 List, JSONObject 本身就是 Map

4

嗯,所以目前我是先做判断再做取值。 Map map = element instanceof JSONObject ? ((JSONObject) element).getInnerMap() : (HashMap) element; 但是目前没有通过拓展实现。

2

@chenzhiguo 你没懂我的意思. Map map=element;