如何使用JSONata按指定键对JSON对象数组进行分组
用JSONata对JSON数组按指定键分组的解决方案
没问题!要实现你描述的按对象内指定键分组JSON数组的需求,JSONata提供了非常简洁的实现方式,用$group()函数就能一步到位。
核心表达式
针对你的需求,直接使用这个JSONata表达式即可:
$group($, "car")
示例验证
我们拿你给出的输入数组来测试:
输入JSON
[ { "car" : "audi", "color" : "blue", "reg" : 133434 }, { "car" : "benz", "color" : "red", "reg" : 134444 }, { "car" : "audi", "color" : "red", "reg" : 134884 } ]
把上面的JSONata表达式应用到这个输入上,就能得到你期望的分组结果:
输出JSON
{ "audi": [ { "car": "audi", "color": "blue", "reg": 133434 }, { "car": "audi", "color": "red", "reg": 134884 } ], "benz": [ { "car": "benz", "color": "red", "reg": 134444 } ] }
简单解释
$在JSONata里代表整个输入数据(这里就是你的JSON数组)$group()是JSONata专门用于分组的函数,第一个参数是要分组的集合,第二个参数是分组依据的键(可以是字段名,也可以是更复杂的路径表达式)- 函数会自动遍历数组,把具有相同键值的元素归为一组,最终生成一个以键值为属性名、对应元素数组为属性值的对象
如果你需要按其他字段分组,只需要把第二个参数改成对应的字段名就行,比如换成"color"就能按颜色分组啦。
内容的提问来源于stack exchange,提问作者ARUN KUMAR
相关产品推荐
相关产品推荐

