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

Java Spring Boot如何从字符串解析二维数组并提取payload JsonObject

解决步骤

你遇到的问题核心是两层序列化转义的嵌套结构,以及取值方式错误导致无法解析数组,按以下步骤实现即可:

核心错误修正

你当前调用.toString()获取args值的方式会给原始字符串额外包裹双引号,导致原本合法的JSON数组字符串变成普通字符串,无法直接解析为数组,需要改用getAsString()直接获取字段原生值。

完整实现代码

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

// 假设originalJsonObject为接口返回的原始JSON对象
public JsonObject extractPayload(JsonObject originalJsonObject) {
    // 1. 拿到args字段的原始字符串值
    String argsRawStr = originalJsonObject.get("args").getAsString();
    // 2. 解析为二维JSON数组
    JsonArray argsArray = JsonParser.parseString(argsRawStr).getAsJsonArray();
    // 3. 取第三个数组元素的第一个值,即payload外层包装串
    String wrapperStr = argsArray.get(2).getAsJsonArray().get(0).getAsString();
    // 4. 解析外层包装对象,拿到payload的序列化字符串
    String payloadRawStr = JsonParser.parseString(wrapperStr).getAsJsonObject().get("payload").getAsString();
    // 5. 解析得到最终payload对象
    return JsonParser.parseString(payloadRawStr).getAsJsonObject();
}

注意事项

  • 若args数组的索引位置可能变动,可以加判空和下标越界校验,避免运行时崩溃。
  • 不要用正则表达式直接匹配payload内容,JSON转义场景下正则极易出现匹配错误,用Gson逐层解析是最稳定的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:24:03