json对象转hashmap
时间: 2025-01-08 15:43:03 浏览: 1
### Java 中 JSON 对象转换为 HashMap 的方法
在 Java 中,可以利用 `org.json` 或者更常用的第三方库如 Jackson 和 Gson 来实现将 JSON 对象转换为 `HashMap`。以下是使用不同方式的具体实例。
#### 使用 org.json 库
当采用 `org.json` 进行操作时,可以通过遍历 `JSONObject` 的 key-value 对来填充到 `HashMap` 中:
```java
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Iterator;
public class JsonToHashMap {
public static HashMap<String, Object> toMap(JSONObject object) throws Exception {
HashMap<String, Object> map = new HashMap<>();
Iterator<String> keysItr = object.keys();
while (keysItr.hasNext()) {
String key = keysItr.next();
var value = object.get(key);
if (value instanceof JSONObject) { // 如果值还是一个 JSON 对象,则递归处理
value = toMap((JSONObject)value);
}
map.put(key, value);
}
return map;
}
}
```
这段代码展示了如何通过迭代器访问所有的键并将其对应的值存入新的哈希映射中[^1]。
#### 使用 Jackson 库
Jackson 是一种高性能的 JSON 处理工具包,在实际项目里更为常用。它提供了简单的方法来进行此类转换工作:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Map;
public class JsonToHashMapWithJackson {
private final ObjectMapper mapper = new ObjectMapper();
public Map<String,Object> convertJsonToMap(String jsonString) throws IOException{
return mapper.readValue(jsonString, Map.class);
}
public Map<String,Object> convertJsonObjectToMap(Object jsonObject){
try {
return mapper.convertValue(jsonObject, Map.class);
} catch (IllegalArgumentException e) {
throw new RuntimeException(e.getMessage());
}
}
}
```
这里定义了一个名为 `ObjectMapper` 的类成员变量用于执行序列化/反序列化的任务,并提供两个静态函数分别接受字符串形式以及已经解析过的 JSON 对象作为输入参数[^2]。
#### 使用 Gson 库
Gson 同样是一个非常流行的 JSON 解析库,其 API 设计简洁明了,易于上手:
```java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Map;
public class JsonToHashMapWithGson {
private final Gson gson = new Gson();
public Map<String, ?> fromJson(String jsonStr) {
Type typeOfHashMap = new TypeToken<Map<String, ?>>(){}.getType();
return gson.fromJson(jsonStr, typeOfHashMap);
}
public Map<String, ?> fromJsonObject(Object jsonObj) {
return gson.fromJson(gson.toJson(jsonObj), new TypeToken<Map<String, ?>>() {}.getType());
}
}
```
此段代码同样实现了两种不同的场景下的转换逻辑——从 JSON 字符串直接读取数据结构或是先由其他类型的对象转化为 JSON 表达再进一步解释为目标类型[^3]。
阅读全文