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

Java中如何将含字符串与整数的嵌套JSON数组解析为POJO?

解决方案

1. 定义适配的POJO结构

首先调整POJO保证和JSON字段完全匹配,避免反序列化异常:

// 响应根对象
public class ApiRootResponse {
    private InnerResponse response;
    // 生成Getter、Setter方法
}

// response内部对象
public class InnerResponse {
    private String version;
    // 和JSON的data字段对应,如果你要保留原有values命名,加@JsonProperty("data")注解即可
    private List<List<Object>> data;
    // 生成Getter、Setter方法
}

这个结构可以100%兼容返回的JSON格式,不会出现映射失败的问题。

2. 遍历提取目标值的实现逻辑

以下是基于Jackson库的实现代码,如果你用Fastjson等其他JSON库,仅需替换嵌套JSON解析的API即可:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.List;

// 初始化目标列表
List<String> coreLists = new ArrayList<>();
List<String> frameList = new ArrayList<>();
ObjectMapper objectMapper = new ObjectMapper();

// 假设已经完成反序列化得到了InnerResponse对象
InnerResponse resp = apiRootResponse.getResponse();
for (List<Object> dataGroup : resp.getData()) {
    // 跳过每组第一个固定的"*"元素,从第二个元素开始遍历
    for (int i = 1; i < dataGroup.size(); i++) {
        List<Object> item = (List<Object>) dataGroup.get(i);
        Object content = item.get(0);
        // 跳过内容为null的项
        if (content == null) {
            continue;
        }
        String contentStr = String.valueOf(content);
        // 判断是否为frame嵌套JSON
        if (contentStr.startsWith("{\"frame\"")) {
            // 解析嵌套的JSON字符串,提取frame数组内容
            JsonNode rootNode = objectMapper.readTree(contentStr);
            JsonNode frameArray = rootNode.get("frame");
            if (frameArray.isArray()) {
                for (JsonNode frame : frameArray) {
                    frameList.add(frame.asText());
                }
            }
        } else {
            // 普通字符串直接存入core列表
            coreLists.add(contentStr);
        }
    }
}

执行完成后,coreLists 就会包含core1、core2、core3,frameList会包含frame1、frame2,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:57:01