如何用JSONata将键值对数组转为父对象属性
解决方案
你可以使用JSONata的动态属性构造和$merge()函数实现动态转换,无需提前知晓properties中的键名。具体表达式如下:
$[].({ "city": city } & $merge(properties.{ (name): value }))
表达式说明:
$[]:遍历输入数组中的每一个城市对象{ "city": city }:保留原始city属性,构造基础对象properties.{ (name): value }:将properties数组中的每个元素转换为单键值对对象(例如{ "population": 37 })$merge():把这些单键值对对象合并成一个完整的属性对象&:将基础对象和合并后的属性对象合并,最终得到包含所有动态属性的目标结构
输入示例:
[ { "city": "Ottawa", "properties": [ { "name": "population", "value": 37 }, { "name": "postalCode", "value": 10001 }, { "name": "founded", "value": 1826 } ] }, { "city": "Toronto", "properties": [ { "name": "population", "value": 54 }, { "name": "postalCode", "value": 10002 } ] } ]
输出结果:
[ { "city": "Ottawa", "population": 37, "postalCode": 10001, "founded": 1826 }, { "city": "Toronto", "population": 54, "postalCode": 10002 } ]
内容的提问来源于stack exchange,提问作者SebLavK
相关产品推荐
相关产品推荐

