arrays - 无法使用 JOLT 正确转换嵌套数组
问题描述
我正在尝试转换 json 嵌套数组的元素并且无法获得预期的结果,要么我正确地获取了 name 元素或 schemaExtensions 元素,但无法将两者结合在一起。
这是我的输入:
{
"rows": [
{
"content": {
"name": {
"content": "User"
},
"schemaExtensions": {
"content": [
{
"content": {
"schema": {
"content": "User"
},
"required": {
"content": true
}
}
}
]
}
}
}
]
}
和 JOlt 规范定义:
[
{
"operation": "shift",
"spec": {
"rows": {
"*": {
"content": {
"name": {
"content": "[&3].name"
},
"schemaExtensions": {
"content": {
"*": {
"content": {
"schema": {
"content": "schemaExtensions.[&7].schema"
},
"required": {
"content": "schemaExtensions.[&7].required"
}
}
}
}
}
}
}
}
}
}
]
预期结果:
[ {
"name" : "User",
"schemaExtensions": [ {
"schema":"User",
"required":true
}]
}]
这是我在规范中同时拥有两者时得到的结果
[ {
"name" : "User"
} ]
如果我从规范中删除名称,那么我会正确获得我的 schemaExtensions:
{
"schemaExtensions" : [ {
"schema" : "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"required" : true
} ]
}
解决方案
name
在显式编写分支( & )之前,您可以从三层嵌套开始漫游schemaExtensions
。无需编写其他键名,例如
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"*": {
"name": { "*": "&1" },
"schemaExtensions": {
"*": {
"*": { "*": { "*": { "*": "&5.&1" } } }
}
}
}
}
}
}
}
]
推荐阅读
- php - $_Session[variable] 在代码中的位置
- python - import-im6.q16: 未授权错误 'os' @error/constitue.c/WriteImage/1037 用于 Python 网络爬虫
- php - 使用 PHP Laravel 从 MySQL 中的多个表中搜索数据
- c# - 如何从 wpf 的列表视图中获取未选择的项目
- javascript - 如何删除服务器上的文件?FilePond.revert 不向 laravel 控制器传递参数
- node.js - 每次页面加载都会调用我的访客计数器 2 次
- python - tkinter - 绘制和查看 networkx 图的多个阶段
- layout - Vaadin 8 View:调整窗口大小时没有水平滚动条
- javascript - 为什么我的网站在显示样式页面之前显示没有样式的元素?
- heroku - 无法从“/app”中找到模块“@babel/plugin-proposal-decorators”