如何将嵌套JSON对象中的creditor节点转换为Java HashMap
别担心,把JSON里的creditor节点转成Java HashMap其实很简单,咱们用Java生态里最常用的两个JSON处理库——Jackson和Gson来实现,下面是具体步骤:
解决方案:将creditor节点转为Java HashMap
方案1:使用Jackson库
Jackson是Spring生态默认的JSON处理库,使用起来非常便捷。
第一步:引入依赖(Maven)
如果你的项目还没引入Jackson,先在pom.xml里添加依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 建议使用最新稳定版 --> </dependency>
第二步:编写转换代码
你可以选择两种方式实现:要么先解析整个JSON再提取creditor,要么直接定位到creditor节点转换:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; import java.util.Map; public class JsonToHashMap { public static void main(String[] args) throws Exception { // 你的原始JSON字符串 String json = "{ \"withDrawAccountNumber\": \"1.10.100.1\", \"Amount\": \"1000\", \"creditor\": { \"2.20.200.2\": \"1700\", \"2.20.200.1\": \"300\" } }"; ObjectMapper objectMapper = new ObjectMapper(); // 方式一:先解析整个JSON为Map,再提取creditor Map<String, Object> fullJsonMap = objectMapper.readValue(json, Map.class); Map<String, String> creditorMap = objectMapper.convertValue(fullJsonMap.get("creditor"), Map.class); // 方式二:直接定位到creditor节点转换(跳过其他字段) // JsonNode rootNode = objectMapper.readTree(json); // Map<String, String> creditorMap = objectMapper.treeToValue(rootNode.get("creditor"), Map.class); // 验证结果 System.out.println(creditorMap); } }
方案2:使用Gson库
Gson是Google推出的轻量JSON处理库,同样深受开发者喜爱。
第一步:引入依赖(Maven)
在pom.xml里添加Gson依赖:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 建议使用最新稳定版 --> </dependency>
第二步:编写转换代码
Gson需要借助TypeToken来处理泛型类型,避免类型擦除问题:
import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.JsonObject; import java.util.Map; public class JsonToHashMapGson { public static void main(String[] args) { String json = "{ \"withDrawAccountNumber\": \"1.10.100.1\", \"Amount\": \"1000\", \"creditor\": { \"2.20.200.2\": \"1700\", \"2.20.200.1\": \"300\" } }"; Gson gson = new Gson(); // 先解析整个JSON为JsonObject JsonObject jsonObject = gson.fromJson(json, JsonObject.class); // 提取creditor节点 JsonObject creditorJson = jsonObject.getAsJsonObject("creditor"); // 用TypeToken指定Map的泛型类型 Map<String, String> creditorMap = gson.fromJson(creditorJson, new TypeToken<Map<String, String>>(){}.getType()); // 验证结果 System.out.println(creditorMap); } }
注意事项
- 如果
creditor里的值是数字类型(比如JSON中是1700而非"1700"),可以把Map的泛型改为Map<String, Integer>或Map<String, Number>,适配实际数据类型。 - 确保使用的JSON库版本为稳定版,避免出现兼容性问题。
- 若你使用的是Spring Boot项目,Jackson通常已经内置,无需额外引入依赖。
内容的提问来源于stack exchange,提问作者Sajjad Serajzadeh
相关产品推荐
相关产品推荐

