繁体   English   中英

Jolt 转换 JSON 规范

[英]Jolt Transform JSON Spec

我需要在输入 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           
    }
}]

这个 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
} ]

解释:

来自javadoc

&路径查找

当 Shiftr 处理数据并沿着规范走时,它会维护一个数据结构,描述它所走的路径。 &通配符可以从该路径以 0 主要、向上的方式访问数据。 例子:

 { "foo" : { "bar": { "baz": // &0 = baz, &1 = bar, &2 = foo } } }

下一件事:如何将输出对象包装到数组中? 这篇文章中可以找到一个很好的例子。

所以,在我们的例子中:

  • "[&1].uuid"说:

uuid值放在数组内的对象中。 数组的索引由&1通配符指示。 对于uuid它将是数组的索引,其中带有uuid键的对象放置在原始 json 中。

  • 接下来, [&2]类似于[&1] 但是,查看"indexable"键,它在输入 json 中更深一层。 这就是为什么我们使用[&2]而不是[&1] (再次查看文档中的 foo-bar 示例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM