如何编写JSONata查询实现数组的数组扁平化?
如何用JSONata扁平化数组的数组?
针对你提到的输入[[1,2], [], [3]],想要得到扁平化后的[1, 2, 3],这里有两种实用的JSONata查询方案:
- 方案一:使用
$flatten()内置函数
这是最直接且通用的方法,JSONata专门提供了$flatten()函数来处理数组扁平化需求,它会递归处理所有嵌套的数组层级,同时自动忽略空数组。
查询代码:
$flatten([[1,2], [], [3]])
执行后直接得到期望输出:[1, 2, 3]。如果你的数组有更深层次的嵌套(比如[[1,[2,3]], [], [4]]),这个函数也能一次性把所有层级都扁平化,得到[1,2,3,4]。
- 方案二:使用数组展开语法
[]
如果只需要扁平化一层嵌套(刚好匹配你的示例场景),可以用连续的数组展开操作:
查询代码:
[[1,2], [], [3]][][]
原理是第一个[]取出外层数组的每一个子元素,第二个[]再把每个子数组的元素逐一展开,空数组展开后不会生成任何元素,最终结果同样是[1, 2, 3]。这种方式更轻量化,适合确定只有一层嵌套的场景。
内容的提问来源于stack exchange,提问作者MTH
相关产品推荐
相关产品推荐

