
jolt 是一种强大的 json 数据转换工具,它允许开发者通过定义一系列规范(spec)来重塑、过滤、转换和聚合 json 数据。在处理异构数据源集成、api 网关数据转换或数据管道预处理等场景中,jolt 能够以声明式的方式高效完成复杂的 json 结构调整。本教程将通过一个具体案例,演示如何利用 jolt 处理包含动态数组的复杂 json 结构,并实现关键字段的数据类型转换。
我们面临的挑战是将一个嵌套的输入 JSON 结构转换为一个扁平化且满足特定格式要求的输出 JSON。
输入 JSON 包含 Entity 对象,其中嵌套了 card 和 Photos 数组。Photos 数组的长度是动态的,可能包含任意数量的元素。
{
"Entity": {
"card": {
"cardNo": "123456789",
"cardStatus": "10",
"cardAddress": "UK",
"cardAddress1": "US",
"cardCity": "mk",
"name": "RAM",
"lastName": "ABU",
"name1": "RAM1",
"lastName1": "ABU1"
},
"Photos": [
{
"Id": 327703,
"Caption": "TEST>> photo 1",
"Url": "http://bob.com/0001/327703/photo.jpg"
},
{
"Id": 327704,
"Caption": "TEST>> photo 2",
"Url": "http://bob.com/0001/327704/photo.jpg"
},
{
"Id": 327704,
"Caption": "TEST>> photo 2",
"Url": "http://bob.com/0001/327704/photo.jpg"
}
]
}
}期望的输出 JSON 结构如下。需要注意以下几点:
{
"tab": {
"text": "123456789"
},
"address": [
{
"add": "UK",
"add2": "US",
"mk": "mk"
}
],
"Photos": [
{
"caption2": "http.1.com",
"no": "222444"
},
{
"caption2": "http.2.com",
"no": "222444"
},
{
"caption2": "TEST>> photo 1",
"no": "327703"
},
{
"caption2": "TEST>> photo 2",
"no": "327704"
},
{
"caption2": "TEST>> photo 2",
"no": "327704"
}
]
}shift 操作是 Jolt 中最常用的操作之一,用于将输入 JSON 中的数据按照指定的路径映射到输出 JSON 的新路径。它负责数据的选择、重命名和结构调整。
第一个 shift 规范负责从 Entity.card 中提取字段并将其映射到 tab 和 address,同时对 Photos 数组进行初步处理,包括生成额外的固定条目。
[
{
"operation": "shift",
"spec": {
"Entity": {
"card": {
"cardNo": "tab.text",
"cardAddress": "address[0].add",
"card以上就是Jolt 复杂 JSON 转换:动态数组处理与数据类型转换实战的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号