You need to enable JavaScript to run this app. 如何在运行时设置数组长度?根据JSON解析结果确定二维数组长度
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行时设置数组长度?根据JSON解析结果确定二维数组长度

基于JSON解析结果初始化二维数组的实现方案

核心逻辑

你只需要在JSON解析完成、拿到完整嵌套结构数据后,分别统计对应层级的元素总数,作为二维数组两个维度的长度参数完成初始化即可,不需要在读取JSON的环节提前预设数组长度。

具体操作步骤

  1. 定位对应维度的元素集合
    完成JSON读取解析后,先明确二维数组两个维度和JSON嵌套结构的对应关系:
    • 数组第一维(行)长度 = JSON最外层嵌套节点的直接子元素总个数
    • 数组第二维(列)长度 = 每个外层子节点下,嵌套的内层元素总个数
  2. 按结构分场景初始化数组
    • 针对规则规整的两层嵌套JSON结构(所有外层子节点的内层元素数完全一致),直接统一取长度即可,示例代码(以Java为例):
      // 解析完成后的JSON根节点列表
      JSONArray rootArray = jsonParsedResult;
      // 取第一维长度:根数组的元素总数
      int rowCount = rootArray.size();
      // 取第二维长度:首个子数组的元素总数(规整结构下行长度统一)
      int colCount = rootArray.getJSONArray(0).size();
      // 初始化对应长度的二维数组
      DataType[][] targetArray = new DataType[rowCount][colCount];
      
    • 针对不规则的嵌套JSON结构(不同外层子节点的内层元素数不固定),不需要提前设置统一的列长度,逐行匹配实际长度即可,示例代码:
      JSONArray rootArray = jsonParsedResult;
      int rowCount = rootArray.size();
      // 先只初始化第一维的长度
      DataType[][] targetArray = new DataType[rowCount][];
      for (int i = 0; i < rowCount; i++) {
          // 给每一行单独设置匹配当前子元素数的列长度
          targetArray[i] = new DataType[rootArray.getJSONArray(i).size()];
      }
      

注意事项

  • 所有长度统计操作必须在JSON完全解析完成后执行,不能在读取流的过程中边读边设置长度,否则容易因为统计不全出现长度溢出、索引越界问题
  • 统计内层元素数时需要对空节点、空数组做判空处理,避免因为读取null值触发空指针异常

内容的提问来源于stack exchange,提问作者Daniel López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 17:45:08