如何使用Jsonata将扁平化JSON结构转换为层级结构?
解决方案
可以用JSONata的group by分组功能结合$map来实现这个层级转换,核心表达式如下:
{ "name": name, "roles": payload group by role $role ( { "rolename": $role, "permissions": $map($, function($item) { { "permissionname": $item.permission } }) } ) }
表达式拆解
- 直接保留原结构的
name字段,无需额外处理; - 用
group by role对payload数组按角色名分组,$role代表当前分组对应的角色值; - 每个分组内:
- 用
$role填充rolename字段; - 通过
$map遍历当前分组的所有权限项,把每个项的permission字段映射成permissionname的对象结构,最终组成permissions数组。
- 用
把这个表达式应用到你的源JSON上,就能得到目标的层级结构。
内容的提问来源于stack exchange,提问作者nils
相关产品推荐
相关产品推荐

