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

如何解析嵌套JSON并替换指定值?Gson实现及工具选择疑问

JSON修改方案对比与Gson完整实现步骤

方案对比

  • 正则方案:不推荐。复杂嵌套JSON的结构多变,正则无法精准定位目标节点,极易因空格、换行等格式差异匹配失败,甚至误改其他相似结构的内容,稳定性极差。
  • Freemarker:不适合这类场景。它主打模板化生成JSON,若仅修改已有JSON的特定节点,需先将JSON转成模板数据、修改后再渲染,步骤繁琐冗余,绝非最优选择。
  • Gson:是该场景的最优方案之一。它专为Java对象与JSON的互转设计,能精准定位嵌套节点,修改后可直接重新序列化生成JSON,逻辑清晰且稳定。

Gson完整实现步骤(Java示例)

方式1:通过实体类操作(推荐,结构清晰易维护)

先根据JSON结构定义对应的实体类:

// 顶层JSON实体
class Root {
    private Data data;
    // 自动生成getter、setter方法
}

class Data {
    private Os0 os0;
    // 自动生成getter、setter方法
}

class Os0 {
    @SerializedName("TD ex") // 适配带空格的键名
    private List<String> tdEx;
    // 自动生成getter、setter方法
}

然后执行解析、修改、重新序列化:

// 1. 解析原始JSON到实体类
Gson gson = new Gson();
String originalJson = "你的原始JSON字符串";
Root root = gson.fromJson(originalJson, Root.class);

// 2. 修改目标节点数组值
root.getData().getOs0().setTdEx(Arrays.asList("a0.c995.c0"));

// 3. 重新生成修改后的JSON
String modifiedJson = gson.toJson(root);

方式2:动态操作JsonObject(无需定义实体类)

如果不想提前定义实体类,可直接解析为JsonObject进行动态修改:

Gson gson = new Gson();
// 1. 解析原始JSON为JsonElement
JsonElement jsonElement = JsonParser.parseString(originalJson);
JsonObject rootObj = jsonElement.getAsJsonObject();

// 2. 逐层定位目标节点并修改
JsonObject dataObj = rootObj.getAsJsonObject("data");
JsonObject os0Obj = dataObj.getAsJsonObject("os0");
// 创建新的目标数组
JsonArray newTdExArray = new JsonArray();
newTdExArray.add("a0.c995.c0");
// 替换原数组
os0Obj.add("TD ex", newTdExArray);

// 3. 重新生成JSON字符串
String modifiedJson = gson.toJson(rootObj);

内容的提问来源于stack exchange,提问作者Tiya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:33:22