首页 > Java > java教程 > 正文

使用 JOLT 进行 Shift 转换:动态提取多层级数据并生成数组

心靈之曲
发布: 2025-07-21 15:44:01
原创
650人浏览过

使用 jolt 进行 shift 转换:动态提取多层级数据并生成数组

本文将详细讲解如何使用 JOLT 的 shift 转换,从多层嵌套的 JSON 结构中提取数据,并将其转换为数组。 即使JSON结构具有不确定的层级深度,我们也能通过调整 JOLT 规范,保证输出结果始终为数组,从而简化后续的数据处理流程。

在 JOLT 中,要将提取的值放入数组中,关键在于在 shift 操作的 spec 中,目标字段的键名后添加 []。 这会将该字段强制转换为数组类型,即使只有一个匹配项。

示例:

假设我们有以下输入 JSON:

{
  "id": 1,
  "item": [
    {
      "id": "1_1",
      "foo": {
        "id": 1232,
        "nn": "sdfsd"
      }
    }
  ]
}
登录后复制

我们的目标是提取 foo.nn 的值,并将其放入名为 type 的数组中。

JOLT Spec:

以下 JOLT spec 可以实现这个目标:

[
  {
    "operation": "shift",
    "spec": {
      "item": {
        "*": {
          "foo": {
            "nn": "type[]"
          }
        }
      }
    }
  }
]
登录后复制

解释:

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人
  • "operation": "shift":指定使用 shift 操作。
  • "item":定位到 JSON 中的 "item" 字段。
  • "*":匹配 "item" 数组中的所有元素。
  • "foo":定位到每个 "item" 元素中的 "foo" 字段。
  • "nn": "type[]":提取 "foo" 字段中的 "nn" 字段的值,并将其放入名为 "type" 的数组中。 关键在于 type[],它确保输出始终是一个数组,即使只有一个 "nn" 字段的值被提取。

输出:

使用上述 JOLT spec 转换输入 JSON,将得到以下输出:

{
  "type": [
    "sdfsd"
  ]
}
登录后复制

多项数据的情况:

如果输入 JSON 中有多个 item 元素,例如:

{
  "id": 1,
  "item": [
    {
      "id": "1_1",
      "foo": {
        "id": 1232,
        "nn": "sdfsd"
      }
    },
    {
      "id": "1_2",
      "foo": {
        "id": 4567,
        "nn": "dfsds"
      }
    }
  ]
}
登录后复制

使用相同的 JOLT spec,输出将自动包含所有提取的值:

{
  "type": [
    "sdfsd",
    "dfsds"
  ]
}
登录后复制

总结:

通过在 JOLT shift 操作的目标字段键名后添加 [],可以强制将输出转换为数组,从而简化数据处理流程,并确保输出格式的一致性。 这种方法尤其适用于处理层级深度不确定的 JSON 结构,可以轻松提取所需数据并将其合并到一个数组中。 记住,[] 的位置至关重要,它必须位于键名之后,才能指示 JOLT 创建一个数组。

以上就是使用 JOLT 进行 Shift 转换:动态提取多层级数据并生成数组的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号