Jolt 用于输入数组以命名数组的值对

Jolt for input array to name value pair of array

输入是:

{
  "Size": "2",
  "done": "true",
  "records": [
    {
      
      "Id": "a7g6s0000004GZuAAM",
      "NN": "00096411.0",
      "Name": "ISOLIN TRADE & INVEST"
    },
    {
      
      "Id": "a7g6s0000004GZzAAM",
      "Number": "00096412.0",
      "Name": "ISOLIN"
    }
  ]
}

使用的规格:

[
  {
    "operation": "remove",
    "spec": {
      "records": {
        "*": {
          "attributes": " "
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "records": {
        "*": { //iterate on each object of records
          "*": { //iterate on each element of object
            "$": "Items[#1].Fields[].Name",
            "@": "Items[#1].Fields[].Value"
          }
        }
      }
    }
  }
]

当前输出:

{
  "Size": "2",
  "done": "true",
  "Items": [
    {
      "Fields": [
        {
          "Name": "Id"
        },
        {
          "Value": "a7g6s0000004GZuAAM"
        },
        {
          "Name": "NN"
        },
        {
          "Value": "00096411.0"
        },
        {
          "Name": "Name"
        },
        {
          "Value": "ISOLIN TRADE & INVEST"
        },
        {
          "Name": "Id"
        },
        {
          "Value": "a7g6s0000004GZzAAM"
        },
        {
          "Name": "Number"
        },
        {
          "Value": "00096412.0"
        },
        {
          "Name": "Name"
        },
        {
          "Value": "ISOLIN"
        }
      ]
    }
  ]
}

预期输出:

{
    "Size": "2",
    "done": "true",
    "Items": [
        {
            "Fields": [
                {
                    "Name": "Id",
                    "Value": "a7g6s0000004GZuAAM"
                },
                {
                    "Name": "NN",
                    "Value": "00096411.0"
                },
                {
                    "Name": "Name",
                    "Value": "ISOLIN TRADE & INVEST"
                },
                {
                    "Name": "Id",
                    "Value": "a7g6s0000004GZzAAM"
                },
                {
                    "Name": "Number",
                    "Value": "00096412.0"
                },
                {
                    "Name": "Name",
                    "Value": "ISOLIN"
                }
            ]
        }
    ]
}

您可以通过使用 Items.&2.[#2]. 模式作为前缀将这些属性分离到单独的对象中,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "records": {
        "*": {
          "*": {
            "$": "Items.&2.[#2].Name",
            "@": "Items.&2.[#2].Value"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "Items": {
        "*": {
          "*": "Fields[]"
        }
      }
    }
  }
]