无法使用JOLT JSON库将JSON对象转换为对象数组

abb*_*abb 1 json jolt

我必须转换的输入JSON如下:

{
  "Business": [
    {
      "Label": "Entertainment",
      "category": "Advert",
      "weight": "",
      "types": [
        "T1",
        "T2"
      ]
    },
    {
      "Label": "FMCG",
      "category": "Campaign",
      "weight": "",
      "types": [
        "T9",
        "T10"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

预期产出:

{
  "Business": [
    {
      "Label": "Entertainment",
      "category": "Advert",
      "weight": "",
      "types": "T1"
    },
    {
      "Label": "Entertainment",
      "category": "Advert",
      "weight": "",
      "types": "T2"
    },
    {
      "Label": "FMCG",
      "category": "Campaign",
      "weight": "",
      "types": "T9"
    },
    {
      "Label": "FMCG",
      "category": "Campaign",
      "weight": "",
      "types": "T10"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

Mil*_*o S 6

你必须做两个班次操作.

您希望根据"类型"数组中的条目数"复制"标签和类别.所以首先,进入一个临时的"bizArray".

同时记录其"类型"与复制的标签和分类在一个临时的"typeArray",具有相同的指标作为bizArray去.

在第二班,"加入"两个并行数组,"bizArray"和"typesArray"来获得你的最终数组.

规格

[
  {
    "operation": "shift",
    "spec": {
      "Business": {
        "*": { // business array
          "types": {
            "*": { // type array
              "@2": "bizArray[]",  // make a copy of the whole biz object
              "@": "typesArray[]"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "bizArray": {
        "*": { // bizArray index
          "Label": "Business[&1].Label",
          "category": "Business[&1].category",
          "weight": "Business[&1].weight"
        }
      },
      "typesArray": {
        "*": "Business[&].types"
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢米洛,这有效!但我无法理解这是如何工作的。这个库的文档非常复杂,对我来说毫无意义。我想我应该尝试另一个图书馆。 (2认同)