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

如何使用GSON动态定位JSON响应中的对象数组并仅解析data数组

Gson 仅解析JSON响应中指定data数组的实现方案

不要使用字符串截取的方式处理结构化JSON,这类方案对格式变化容错性极差,Gson本身提供的原生API完全可以在不编写外层响应模型类的前提下,精准提取目标字段解析,完全忽略其余无关字段。

方案1:树模型提取(推荐,代码最简洁)

该方案代码量最低,易维护,只要接口返回中data字段名不变,外层其余字段新增、删除、结构调整都不会影响解析逻辑,适配绝大多数业务场景。
核心逻辑是先将完整JSON解析为通用的Json树结构,直接定位到data节点后,再转换为你已经定义好的实体类列表:

import com.google.gson.Gson;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import java.util.List;

// 复用项目中已经配置好的Gson实例即可
Gson gson = new Gson();
// 传入接口返回的完整JSON字符串,解析为通用树结构
List<YourDataItem> result = gson.fromJson(
    JsonParser.parseString(responseRawStr)
              .getAsJsonObject()
              .get("data"),
    new TypeToken<List<YourDataItem>>(){}.getType()
);

代码中YourDataItem就是你已经编写完成的、对应data数组内单个对象的序列化模型类,无需做任何修改。

方案2:流式解析(适合超大响应体场景)

如果单页返回的data数组数据量极大(千条以上记录),不想将整个JSON加载到内存中构建树结构,可以使用Gson的流式JsonReader API,遍历JSON结构时直接跳过非目标字段,仅解析data数组内容,内存占用更低:

import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

Gson gson = new Gson();
List<YourDataItem> result = new ArrayList<>();

try (JsonReader reader = new JsonReader(new StringReader(responseRawStr))) {
    reader.beginObject();
    while (reader.hasNext()) {
        String currentField = reader.nextName();
        if ("data".equals(currentField)) {
            // 定位到data数组,逐个解析内部元素
            reader.beginArray();
            while (reader.hasNext()) {
                result.add(gson.fromJson(reader, YourDataItem.class));
            }
            reader.endArray();
            // 解析完data后直接跳过剩余所有字段,终止遍历
            reader.skipValue();
            break;
        } else {
            // 非目标字段直接跳过,支持任意类型值(对象、数组、基础类型)
            reader.skipValue();
        }
    }
    reader.endObject();
}

注意事项

  • 两种方案都不会校验meta、links字段的结构,哪怕后续接口在外层新增其他字段,也不会导致解析报错
  • 彻底避免手动字符串截取带来的格式错位、特殊字符处理错误、字段顺序变化适配难等问题
  • 常规业务场景优先选择方案1,只有在响应体体积特别大、对内存占用有严格要求时再用方案2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:39:26