多维数组支持
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()实现