fastjson2.0.38的bug,计算minP和maxP的hash值是相同的,导致key的值被错误覆盖

Fastjson 是阿里巴巴开源的高性能 JSON 处理库,可以方便地提取 JSON 中的 key 。以下是几种常见的提取方式: ### 提取单层 JSON 的 key 对于简单的单层 JSON 数据,可以使用 `JSONObject` 类的 `keySet()` 方法获取所有的 key 。 ```java import com.alibaba.fastjson.JSONObject; public class ExtractSingleLevelKeys { public static void main(String[] args) { String jsonStr = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; JSONObject jsonObject = JSONObject.parseObject(jsonStr); for (String key : jsonObject.keySet()) { System.out.println(key); } } } ``` ### 提取嵌套 JSON 的 key 如果 JSON 数据是嵌套结构,需要递归遍历每个 `JSONObject` 来提取所有的 key 。 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.Map; public class ExtractNestedKeys { public static void extractKeys(JSONObject jsonObject) { for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { String key = entry.getKey(); System.out.println(key); Object value = entry.getValue(); if (value instanceof JSONObject) { extractKeys((JSONObject) value); } } } public static void main(String[] args) { String jsonStr = "{\"person\":{\"name\":\"John\",\"age\":30},\"address\":{\"city\":\"New York\",\"street\":\"123 Main St\"}}"; JSONObject jsonObject = JSON.parseObject(jsonStr); extractKeys(jsonObject); } } ``` ### 提取 JSON 数组中对象的 key 当 JSON 数据包含数组时,需要遍历数组中的每个元素,再提取其中的 key 。 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class ExtractArrayKeys { public static void main(String[] args) { String jsonStr = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]"; JSONArray jsonArray = JSON.parseArray(jsonStr); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); for (String key : jsonObject.keySet()) { System.out.println(key); } } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值