Skip to main content

改变JSON数组的结构

目的

把JSON数组转换成JSON对象输出。

示例说明

把user数组转换成一个user对象。

输入数据:

{
"name": "数聚蜂巢",
"url": "https://www.orchsym.com",
"published_date": "2018/05/25",
"user": [
{
"description": "created_time",
"value": "2018/12/25 14:30:05"
},
{
"description": "updated_time",
"value": "2019/01/11 11:10:25"
},
{
"description": "delete_time",
"value": "2019/07/11 17:30:00"
}
]
}

期望输出数据:

{
"name": "数聚蜂巢",
"url": "https://www.orchsym.com",
"published_date": "2018/05/25",
"user": {
"created_time": "2018/12/25 14:30:05",
"updated_time": "2019/01/11 11:10:25",
"delete_time": "2019/07/11 17:30:00"
}
}

流程编排

流程说明

  • 测试数据由组件GenerateFlowFile生成,且通过配置自定义文本参数的内容与上面输入数据相同的JSON数据。

    注意:切记将该组件调度下的运行安排设置大些,否则将瞬间生成大量测试数据;两个GenerateFlowFile组件设置是一样的。

  • 方式1:通过设置组件JoltTransformJSON的DSL为移位来进行JSON数组结构的转换。
Jolt规则
{
"*":"&",
"user":{
"*":{
"value":"user.@(1,description)"
}
}
}

  • 方式2:通过设置组件JoltTransformJSON的DSL为链式规则来完成JSON数组到对象的转换。
Jolt规则
[
{
"operation":"shift",
"spec":{
"*":"&",
"user":{
"*":{
"value":"user.@(1,description)"
}
}
}
}
]

输出结果

输出结果与期望值一致。

流程模板

参见附件(请右键另存保存):JSON数组转换模板