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

如何使用Jolt处理JSON对象结构不一致时的属性提取

如何编写Jolt Transform处理结构不一致的JSON转换需求?

输入JSON

[
  {
    "id": "65cf06b62fadc0122dc30f29",
    "code": "H34.23.9-240216-0003",
    "applicant": {
      "eformId": "60d990f88e6893001e5a7b42",
      "userId": "6186433deee4513fe0d86efc",
      "data": {
        "birthday": "",
        "address": "Thôn Kon Năng Treang",
        "gender": 2,
        "nation": {
          "label": "Việt Nam",
          "value": "5f39f4a95224cf235e134c5c"
        },
        "ghiChu": "",
        "identityDate": "",
        "noiDung": "",
        "phoneNumber": "",
        "province": {
          "label": "Tỉnh Kon Tum",
          "value": "5def47c5f47614018c000062"
        },
        "identityNumber": "062195002130",
        "soBoHoSo": "1",
        "organization": "Y Thảo",
        "district": {
          "label": "Huyện Đắk Hà",
          "value": "5def47c5f47614018c001615"
        },
        "identityAgency": {},
        "fullname": "Y Thảo",
        "fax": "",
        "village": {
          "label": "Xã Đắk Ui",
          "value": "5def47c5f47614018c123509"
        },
        "email": ""
      }
    }
  },
  {
    "id": "65cf24e3f21075472fe549c7",
    "code": "H34.6-240216-0032",
    "nationCode": "G22.99-240216-030023-H34",
    "applicant": {
      "eformId": "624bb547cdb7f7ec092bee16",
      "data": {
        "fullname": "CÔNG TY CỔ PHẦN VIEON",
        "province": {
          "label": "Thành phố Hồ Chí Minh",
          "value": "5def47c5f47614018c000079"
        },
        "district": {
          "label": "Quận 3",
          "value": "5def47c5f47614018c001770"
        },
        "village": {
          "label": "Phường Võ Thị Sáu",
          "value": "5def47c5f47614018c127139"
        },
        "phoneNumber": "02838241919",
        "fax": "02838241919",
        "mail": "an.hoang@vieon.vn",
        "taxCode": "0314415573",
        "contact": "Hoàng Lê Huế An ",
        "contactPhoneNumber": "0385792805",
        "chonDoiTuong": 2,
        "hinhThucNop": 2,
        "ownerFullname": "CÔNG TY CỔ PHẦN VIEON",
        "identityNumber": "0314415573",
        "ownerIdentityNumber": "0314415573",
        "isOwnerDossier": true
      }
    }
  }
]

期望输出JSON

[
  {
    "id": "65cf06b62fadc0122dc30f29",
    "eformId": "60d990f88e6893001e5a7b42",
    "gender": 2,
    "fullname": "Y Thảo",
    "ownerFullname": "",
    "province_label": "Tỉnh Kon Tum"
  },
  {
    "id": "65cf24e3f21075472fe549c7",
    "eformId": "624bb547cdb7f7ec092bee16",
    "gender": null,
    "fullname": "CÔNG TY CỔ PHẦN VIEON",
    "ownerFullname": "CÔNG TY CỔ PHẦN VIEON",
    "province_label": "Thành phố Hồ Chí Minh"
  }
]

Jolt转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": "[&1].id",
        "applicant": {
          "eformId": "[&2].eformId",
          "data": {
            "gender": "[&3].gender",
            "fullname": "[&3].fullname",
            "ownerFullname": "[&3].ownerFullname",
            "province": {
              "label": "[&4].province_label"
            }
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "*": {
        "gender": null,
        "ownerFullname": ""
      }
    }
  }
]

转换说明

  1. Shift操作:

    • 遍历输入数组的每个元素(*),提取顶层id到输出数组对应位置的id字段
    • 提取applicant.eformId到输出的eformId字段
    • 从applicant.data中提取gender、fullname、ownerFullname字段
    • 将applicant.data.province.label重命名为province_label并提取
    • &1、&2等是Jolt上下文索引,用来定位数组元素位置,保证字段映射到正确的输出对象
  2. Default操作:

    • 为数组中每个元素的缺失字段设置默认值:gender默认设为null,ownerFullname默认设为空字符串
    • 自动处理输入中不存在对应字段的情况,确保输出结构统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:51:03