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

如何将JsonElement放回JsonObject?实现嵌套JSON值替换

替换嵌套JSON指定值并回写原对象

问题场景

原始JSON:

{
  "data": {
    "car": {
      "xia": [
        "a0.c904.b0"
      ]
    }
  }
}

期望修改后得到:

{
  "data": {
    "car": {
      "xia": [
        "a0.c234.b0"
      ]
    }
  }
}

你已经完成了目标字符串的替换,但不清楚如何将修改后的值写回原JsonObject,以下是修正后的完整解决方案:

修正后的代码

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class JsonModifyExample {
    public static void main(String[] args) {
        String inputJson = "{\n"
                + "  \"data\": {\n"
                + "    \"car\": {\n"
                + "      \"xia\": [\n"
                + "        \"a0.c904.b0\"\n"
                + "      ]\n"
                + "    }\n"
                + "  }\n"
                + "}";
        
        // 解析原始JSON为顶层JsonObject
        JsonObject rootObj = JsonParser.parseString(inputJson).getAsJsonObject();
        
        // 逐层获取到car对象(后续要修改它的xia属性)
        JsonObject carObj = rootObj.getAsJsonObject("data").getAsJsonObject("car");
        
        // 获取xia对应的JsonArray,取出数组中的目标字符串
        JsonArray xiaArray = carObj.getAsJsonArray("xia");
        String originalStr = xiaArray.get(0).getAsString();
        
        // 执行字符串替换逻辑
        String[] strs = originalStr.split("\\.");
        String replacedStr = strs[0] + "." + strs[1].replaceAll("\\d+", "234") + "." + strs[2];
        
        // 将替换后的字符串放回数组(因JsonArray是引用类型,修改后会自动同步到原对象)
        xiaArray.set(0, JsonParser.parseString("\"" + replacedStr + "\""));
        
        // 输出修改后的完整JSON
        System.out.println(rootObj.toString());
    }
}

关键注意点

  • xia对应的值是JsonArray而非普通字符串,不能直接调用getAsString(),需要先取数组的第一个元素
  • Gson中的JsonArray和JsonObject都是引用类型,修改数组内部元素后,原JSON对象会自动同步变更,无需额外重新赋值
  • 构造替换后的JsonElement时,要给字符串包裹双引号再解析,否则会被识别为非字符串类型导致报错

内容的提问来源于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 05:22:07