我需要在Input JSON下面进行转换以输出JSON,并且不确定如何编写规范。需要重新定位一个字段(“ homePage”)作为根元素。任何帮助或建议,将不胜感激。
输入JSON:
[{
"uuid": "cac40601-ffc9-4fd0-c5a1-772ac65f0587",
"pageId": 123456,
"page": {
"indexable": true,
"rootLevel": false,
"homePage": false
}
}]
输出JSON:
[{
"uuid": "cac40601-ffc9-4fd0-c5a1-772ac65f0587",
"pageId": 123456,
"homePage": false,
"page": {
"indexable": true,
"rootLevel": false
}
}]
答案 0 :(得分:3)
此Jolt Spec应该适合您。经过https://jolt-demo.appspot.com/
测试[
{
"operation": "shift",
"spec": {
"*": {
"uuid": "[&1].uuid",
"pageId": "[&1].pageId",
"page": {
"indexable": "[&2].page.indexable",
"rootLevel": "[&2].page.rootLevel",
"homePage": "[&2].homePage"
}
}
}
}
]
输入:
{
"uuid" : "cac40601-ffc9-4fd0-c5a1-772ac65f0587",
"pageId" : 123456,
"page" : {
"indexable" : true,
"rootLevel" : false
},
"homePage" : false
}
输出:
[ {
"uuid" : "cac40601-ffc9-4fd0-c5a1-772ac65f0587",
"pageId" : 123456,
"page" : {
"indexable" : true,
"rootLevel" : false
},
"homePage" : false
} ]
说明:
&
路径查找当Shiftr处理数据并遵循规范时,它会维护描述其行走路径的数据结构。
&
通配符可以以0大,向上的方式从该路径访问数据。 示例:{ "foo" : { "bar": { "baz": // &0 = baz, &1 = bar, &2 = foo } } }
下一步:如何将输出对象包装到数组中? 可以在this post中找到一个很好的例子。
所以,在我们的例子中:
"[&1].uuid"
说:将
uuid
值放在数组内的对象中。数组的索引由&1
通配符指示。对于uuid
,它将是数组的索引,其中使用uuid
键的对象将放置在原始json中。
[&2]
与[&1]
类似。但是,查看"indexable"
键,它在输入json中更深一层。这就是为什么我们使用[&1]
而不是[&2]
的原因(再次看一下文档中的foo-bar示例)。