首页 > 解决方案 > 无法使用 jolt 转换器将 stringfy json 对象数组转换为 json 对象

问题描述

输入json

"sales" : "[{\"Option\":\"Britania\",\"value\":\"200\"}{\"Option\":\"Parle\",\"value\":\"100\"}{\"Option\":\"mariegold\",\"value\":\"500\"}{\"Option\":\"snacks\",\"value\":\"200\"}]",

使用震动变压器

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "CREATIONDATETIME": "=substring(@(1,CREATIONDATETIME),0,19)"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "sales": "extendedAttributes.salesValueOptions",
      "status": {
        "SUBMITTED": {
          "#submitted": "key6"
        }
      }
    }
  },
  {
    "operation": "modify-default-beta",
    "spec": {
      "key6": "pending"
    }
  }
]

需要输出

{
  "sales": {
    "option1": "Britannia",
    "value1": "0",
    "option2": "cadbury",
    "value2": "0",
    "option3": "Parle",
    "value3": "0"
  }
}

我已经尝试了 JOLT github 帮助页面上提供的不同 JsonSpecs。但我无法解决这个问题。任何帮助或指示将不胜感激。

标签: jsonjolttransformer

解决方案


颠簸规格:

[
//First remove the NoneOfTheAbove Element from the array
  {
    "operation": "shift",
    "spec": {
      "sales": {
        "*": {
          "Option": {
            "None of the above": null,
            "*": {
              "@2": "filteredOutput"
            }
          }
        }
      }
    }
  },
  // then map the output accordingly
  {
    "operation": "shift",
    "spec": {
      "filteredOutput": {
        "*": {
          "Option": "sales.option&1",
          "value": "sales.value&1"
        }
      }
    }
  }


]

输出:

{
  "sales" : {
    "option0" : "Britannia",
    "value0" : "0",
    "option1" : "Cadbury",
    "value1" : "0",
    "option2" : "Parle",
    "value2" : "0"
  }
}

请尝试让我知道是否有任何问题。


推荐阅读