我有Jolt转换的问题,我需要从数组列表中提取值/字段,并从数组中添加一个自定义字段,我的目标是提取或外部列表.但是让我试着通过代码更详细地解释一下.

这是我的输入(在"data"中只有2个字段集,最初我在"data"中有200多个字段集):

{
  "result": {
    "id": "123456789",
    "year": 2023,
    "version": "0.1",
    "country": "UK",
    "modified": "2023-11-09T00:00:00",
    "data": [
      {
        "FieldNumber1": "CompanyNumber",
        "FieldNumber2": "0.1",
        "FieldNumber3": "123456789",
        "FieldNumber4": false,
        "FieldNumber5": false,
        "FieldNumber6": 1,
        "FieldNumber7": 0
      },
      {
        "FieldNumber1": "CompanyName",
        "FieldNumber2": "0.1",
        "FieldNumber3": "FunctionsAndStrings",
        "FieldNumber4": false,
        "FieldNumber5": false,
        "FieldNumber6": 1,
        "FieldNumber7": 0
      }
    ],
    "description": null,
    "downloadNumber": "aaaaa-bbbbb-11111-22-abcabc123"
  },
  "true": null,
  "false": null
}

我期待的结果是这样的:

[
  {
    "id": "123456789",
    "FieldNumber1": "CompanyNumber",
    "FieldNumber2": "0.1",
    "FieldNumber3": "123456789",
    "FieldNumber4": false,
    "FieldNumber5": false,
    "FieldNumber6": 1,
    "FieldNumber7": 0
  },
  {
    "id": "123456789",
    "FieldNumber1": "CompanyName",
    "FieldNumber2": "0.1",
    "FieldNumber3": "FunctionsAndStrings",
    "FieldNumber4": false,
    "FieldNumber5": false,
    "FieldNumber6": 1,
    "FieldNumber7": 0
  }
]

[
  {
    "CompanyNumber": "123456789",
    "FieldNumber1": "CompanyNumber",
    "FieldNumber2": "0.1",
    "FieldNumber3": "123456789",
    "FieldNumber4": false,
    "FieldNumber5": false,
    "FieldNumber6": 1,
    "FieldNumber7": 0
  },
  {
    "CompanyNumber": "123456789",
    "FieldNumber1": "CompanyName",
    "FieldNumber2": "0.1",
    "FieldNumber3": "FunctionsAndStrings",
    "FieldNumber4": false,
    "FieldNumber5": false,
    "FieldNumber6": 1,
    "FieldNumber7": 0
  }
]

I would like to have only a list from "data" but with fixed "id" from the "result", bef或e each data set. Also in the first data set "FieldNumber1" will always be "CompanyNumber" and it will always contain the same value in "FieldNumber3" as "id" in "result". Maybe it easier to calculate it from "FieldNumber3".

我只用这个简单的Jolt规范删除了"结果",只提取了"数据"列表:

[
  {
    "operation": "shift",
    "spec": {
      "result": {
        "data": ""
      }
    }
  }
]

I need to st或e each set of data in the table with the first attribute "id" 或 "CompanyNumber" so I can join it with other tables.

非常感谢!

推荐答案

您可以使用下面的Jolt规范

[
  {
    "operation": "shift",
    "spec": {
      "result": {
        "data": {
          "*": {
            "@(2,id)": "[#4].&1.id",
            "*": "[#4].&1.&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[]"
      }
    }
  }
]

Json相关问答推荐

在Reaction中从JSON文件中筛选数组

如何使用PowerShell从ExchangeOnline命令执行中获得JSON输出

如何用JQ打印JSON文件的路径和键值

在 SQL 存储过程中使用参数 Select 值

使用 jq,如何将两个属性构成键的对象数组转换为对象的索引对象?

在 postgres 14 中将记录转换为所需的 json 格式

通过 xslt 将内部 json 转换为 xml 时遇到问题

从 PowerShell 编辑 Windows 终端配置文件设置 JSON

为什么在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

JSON 模式验证

使用非美国日期格式时,JsonConvert.DeserializeObject 无法将字符串转换为 DateTime

如何将 LinkedTreeMap 转换为 gson JsonObject

在 Postgres 中向 JSON 对象添加元素

在 JSON 对象中强制执行非空字段

在 Jersey 服务中使用 JSON 对象

如何在已声明的 JSON 对象中添加键值对

在 Android 中使用带有 post 参数的 HttpClient 和 HttpPost

JSON日期到Java日期?

如何将 mysqli 结果转换为 JSON?

JSON 格式的 Amazon S3 响应?