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

Java能否创建不同索引维度各异的数组?用于JSON解析

在Java中实现不规则维度数组(JSON式混合结构)

用Java Object数组实现不规则维度结构

Java完全支持创建这种混合维度的"锯齿状"结构,核心思路是使用Object[]类型数组——因为数组本身属于Object子类,所以一个Object[]的元素既可以是另一个Object[](对应JSON数组),也可以是String(对应JSON字符串值)。

你给出的JSON结构,对应的Java数组可以这样构建:

Object jsonLikeArray = new Object[] {
    new Object[] {
        new Object[] {"String", "String2"},
        "String3"
    },
    "String4"
};

访问元素时需要做类型强制转换,示例:

// 获取最内层的"String2"
String str2 = (String) ((Object[]) ((Object[]) jsonLikeArray)[0])[0][1];
// 获取"String4"
String str4 = (String) ((Object[]) jsonLikeArray)[1];

更适合JSON解析的替代方案:使用List

数组的长度固定,创建时需要提前确定结构,对动态解析JSON不够友好。更推荐用List<Object>构建动态结构,它支持动态添加元素,完美适配JSON的任意嵌套特性:

import java.util.ArrayList;
import java.util.List;

List<Object> jsonLikeList = new ArrayList<>();

// 构建内层嵌套结构
List<Object> innerLevel3 = new ArrayList<>();
innerLevel3.add("String");
innerLevel3.add("String2");

List<Object> innerLevel2 = new ArrayList<>();
innerLevel2.add(innerLevel3);
innerLevel2.add("String3");

jsonLikeList.add(innerLevel2);
jsonLikeList.add("String4");

访问元素示例:

// 获取"String3"
String str3 = (String) ((List<Object>) jsonLikeList.get(0)).get(1);

解析实现思路

在你的JSON解析器中,遇到JSON数组时就创建Object[]或List<Object>,遇到字符串时直接添加对应的String对象即可。这种方式无需预设维度,完全适配JSON的任意嵌套结构。如果需要更严谨的类型处理,可以在解析时记录元素类型(数组/字符串),但对于基础解析器来说,Object[]或List<Object>已经足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:07:43