Skip to main content

替换JSON数据值

目的

替换JSON数据中某一个字段或多个字段的值为新值。

示例说明

替换日期格式的数据为毫秒数。

输入数据:

{
"name": "数聚蜂巢",
"url": "https://www.orchsym.com",
"published_date": "2018/05/25",
"user": {
"name": "Admin",
"account": "admin@orchsym.com",
"created_time": "2018/12/25 14:30:05",
"updated_time": "2019/01/11 11:10:25"
}
}

期望输出数据:

{
"name" : "数聚蜂巢",
"url" : "https://www.orchsym.com",
"published_date" : "1527177600000",
"user" : {
"name" : "Admin",
"account" : "admin@orchsym.com",
"created_time" : "1545719405000",
"updated_time" : "1547178232164"
}
}

流程编排

流程说明

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

    注意:切记将该组件“调度”下的“运行安排”设置大些,否则将瞬间生成大量测试数据。

  • 首先,将需要替换为新值的JSON字段用EvaluateJsonPath组件提取成属性值。

  • 然后,通过表达式语言以及组件UpdateAttribute将提取出来的属性更新为新值。

  • 最后,通过组件JoltTransformJSON设置修改-覆盖的规则来完成新值的替换。

实际输出数据

{
"name" : "数聚蜂巢",
"url" : "https://www.orchsym.com",
"published_date" : "1527177600000",
"users" : {
"name" : "Admin",
"account" : "admin@orchsym.com",
"created_time" : "1545719405000",
"updated_time" : "1547178266929"
}
}

期望获得的输出数据可能与期望的格式上不一致,因为updated_time是实时计算当前时间戳值。

流程模板

参见附件(请右键另存保存):JSON数据值替换模板

场景

比如:当客户用HandleHTTPRequest组件生成API接口时,客户端请求的日期参数的实际格式跟数据库或第三方系统的格式不一致时,需要将部分字段的值更新为合理的正确的新值(比如日期转换为统一的毫秒数,数据库JDBC将自动转换为相应的date/time/timestamp格式)。