You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 18:22:29