我需要在输入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
}
}]发布于 2020-08-25 15:44:03
这个颠簸规格应该对你有用。用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
} ]解释:
来自javadoc
&路径查找 当Shiftr处理数据并沿着规范走时,它维护一个数据结构,描述它走过的路径。&通配符可以以0大方向向上的方式从该路径访问数据。示例: { " foo“:{ "bar":{ "baz":// &0 = baz,&1 = bar,&2 =foo}}
下一步:如何将输出对象包装到数组中?在这个职位中可以找到一个很好的例子。
因此,在我们的案例中:
"[&1].uuid"说:将
uuid值放置在数组中的对象中。数组的索引由&1通配符指示。对于uuid,它将是数组的索引,其中带有uuid键的对象被放置在原始的json中。
[&2]与[&1]类似。但是,看看"indexable"键,它在输入json中是一个更深的层次。这就是为什么我们使用的不是[&1],而是[&2] (再看一下文档中的foo示例)。https://stackoverflow.com/questions/63581550
复制相似问题