You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JOLT嵌套数组过滤需求:筛选仅含ACTIVE状态的PrivateInfo

JOLT 转换实现方案

输入 JSON

{
  "Users": [
    {
      "ID": "1",
      "TD": [{"serial": 112}],
      "HD": ["FFA", "FFB"],
      "LD": "12",
      "PrivateInfo": [
        {"InfoId": "ID1-II1", "statuses": ["ACTIVE"]},
        {"InfoId": "ID1-II2", "statuses": ["ACTIVE", "INACTIVE"]},
        {"InfoId": "ID1-II3", "statuses": ["IN_PROGRESS"]}
      ]
    },
    {
      "ID": "2",
      "TD": [{"serial": 156}],
      "HD": ["FFB"],
      "LD": "65",
      "PrivateInfo": [
        {"InfoId": "ID2-II1", "statuses": ["ACTIVE", "SUSPENDED"]},
        {"InfoId": "ID2-II2", "statuses": ["ACTIVE", "INACTIVE"]},
        {"InfoId": "ID2-II3", "statuses": ["IN_PROGRESS"]}
      ]
    },
    {
      "ID": "3",
      "TD": [{"serial": 557}],
      "HD": ["FFA", "FFC"],
      "LD": "98",
      "PrivateInfo": [
        {"InfoId": "ID3-II1", "statuses": ["ACTIVE"]},
        {"InfoId": "ID3-II2", "statuses": ["ACTIVE"]}
      ]
    }
  ]
}

需求回顾

  • 对每个User的PrivateInfo数组,仅保留statuses**仅包含"ACTIVE"**的项(即数组长度为1且元素是"ACTIVE")
  • 处理后PrivateInfo为空的User直接移除

JOLT 转换规格

[
  {
    "operation": "shift",
    "spec": {
      "Users": {
        "*": {
          "ID": "Users.[&1].ID",
          "TD": "Users.[&1].TD",
          "HD": "Users.[&1].HD",
          "LD": "Users.[&1].LD",
          "PrivateInfo": {
            "*": {
              "statuses": {
                "1": {
                  "ACTIVE": {
                    "@2": "Users.[&5].PrivateInfo[]"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Users": "=filter($, function($v) { return !isEmpty($v.PrivateInfo); })"
    }
  }
]

转换说明

  1. Shift 操作:

    • 遍历每个User,保留ID、TD、HD、LD原有字段
    • 对PrivateInfo的每个元素,嵌套判断:先检查statuses数组长度是否为1,再判断元素是否为"ACTIVE",满足条件的项才存入新的PrivateInfo数组
  2. Modify-overwrite-beta 操作:

    • 用filter函数过滤Users数组,仅保留PrivateInfo不为空的User对象

输出结果

{
  "Users": [
    {
      "ID": "1",
      "TD": [{"serial": 112}],
      "HD": ["FFA", "FFB"],
      "LD": "12",
      "PrivateInfo": [{"InfoId": "ID1-II1", "statuses": ["ACTIVE"]}]
    },
    {
      "ID": "3",
      "TD": [{"serial": 557}],
      "HD": ["FFA", "FFC"],
      "LD": "98",
      "PrivateInfo": [
        {"InfoId": "ID3-II1", "statuses": ["ACTIVE"]},
        {"InfoId": "ID3-II2", "statuses": ["ACTIVE"]}
      ]
    }
  ]
}

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:12:41