跳到主要内容

多维数组支持

返回文档导航


JSONMap 支持通过路径语法构建和访问多维数组。

二维数组

JSONMap json = new JSONMap();

json.set("matrix[0][0]", 1);
json.set("matrix[0][1]", 2);
json.set("matrix[1][0]", 3);
json.set("matrix[1][1]", 4);

// 结果: {"matrix":[[1,2],[3,4]]}

json.getInt("matrix[0][1]"); // → 2

三维数组

JSONMap json = new JSONMap();
json.set("cube[0][0][0]", 1);
json.set("cube[0][0][1]", 2);
json.set("cube[1][0][0]", 3);

// 结果: {"cube":[[[1,2]],[[3]]]}

json.getInt("cube[0][0][1]"); // → 2

数组自动补齐

设置的索引超过当前数组长度时,中间位置填充 null:

JSONMap json = new JSONMap();
json.set("arr[5]", "value");

// 结果: {"arr":[null,null,null,null,null,"value"]}

json.set("matrix[3][3]", 9);
// 结果: {"matrix":[null,null,null,[null,null,null,9]]}

混合路径

数组和对象路径可以混合使用:

JSONMap config = new JSONMap();
config.set("clusters[0].servers[0].ports[0]", 8080);
config.set("clusters[0].servers[0].ports[1]", 8081);
config.set("clusters[1].servers[0].ports[0]", 7080);

config.getInt("clusters[0].servers[0].ports[1]"); // → 8081

注意事项

  • 访问不存在的索引返回 null,不抛异常
  • 同一数组可以包含不同类型元素
  • 多维数组通过 handleArrayKey() / parseArrayIndices() 实现

上一节:@SetValue注解映射 | 返回文档导航 | 下一节:自动类型纠正 →