首页 > 解决方案 > 复杂 JSON 转换的 Jolt

问题描述

从第一个数组元素和第二个元素中提取值并连接两者。输入字符串:

[
  {
    "creationDate": "2020-04-01T14:14:32.685+0000",
    "factValues": [
      {
        "Factname": "Medicine",
        "factvalue": "1234556",
        "sourcePguid": "1"
      },
      {
        "Factname": "Journal",
        "factvalue": "123455",
        "sourcePguid": "1"
      }
    ]
  },
  {
    "creationDate": "2020-04-01T14:14:32.685+0000",
    "factValues": [
      {
        "Factname": "chemical",
        "factvalue": "123455567",
        "sourcePguid": "2"
      },
      {
        "Factname": "Rubber",
        "factvalue": "123455435",
        "sourcePguid": "3"
      }
    ]
  }
]

输出除外:

{
   {
    "sourcePguid" : "1",
    "Medicine":"1234556",
    "Journal":"123455"
  }, {
    "sourcePguid" : "2",
    "chemical":"123455567",
    "Rubber":"123455435"
  } 
}

请帮助我在 spec.json 中实现预期的 output.json。规范未按预期输出进行转换。我想学习如何在字符串解析器中使用属性。它会很棒。

标签: jolt

解决方案


希望这可能会有所帮助,

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "factValues": {
          "*": {
            "sourcePguid": "&3.sourcePguid",
            "@(0,factvalue)": "&3.@Factname"
          }
        }
      }
    }
  }, {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "sourcePguid": "=firstElement(@(1,sourcePguid))"
      }
    }
}
]

推荐阅读