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

无法使用JOLT JSON库将JSON对象转换为对象数组,json,jolt,Json,Jolt,我必须转换的输入JSON如下所示: { "Business": [ { "Label": "Entertainment", "category": "Advert", "weight": "", "types": [ "T1", "T2" ] }, { "Label": "FMCG", "category": "Campaign", "wei

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

{
  "Business": [
    {
      "Label": "Entertainment",
      "category": "Advert",
      "weight": "",
      "types": [
        "T1",
        "T2"
      ]
    },
    {
      "Label": "FMCG",
      "category": "Campaign",
      "weight": "",
      "types": [
        "T9",
        "T10"
      ]
    }
  ]
}
预期产出:

{
  "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"
    }
  ]
}

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

您必须进行两班制操作

您希望根据“类型”数组中的条目数“复制”标签和类别。因此,首先将其放入一个临时的“bizArray”

还要在临时“typeArray”中记录哪个“type”与重复的标签和类别相匹配,该临时“typeArray”具有与bizArray相同的索引

在第二个班次中,“连接”两个并行数组,“bizArray”和“typesArray”以获得最终数组

规格


typess
在您的输入/输出示例中是一个输入错误吗?是的,是一个输入错误。我现在已经改正了。谢谢米洛,这很有效!。但我不明白这是怎么回事。关于这个库的文档太复杂了,对我来说毫无意义。我想我应该另找一个图书馆。干得好!我从来没有使用过Jolt,但我昨晚看了一下,花了几个小时阅读文档并玩了演示。我非常接近(我知道它需要两个
shift
s),但就是无法得到正确的最终产品。至少可以说,震动很有趣!谢谢这是一件复杂的事。A) 每个操作(故意)都可以有不同的DSL,因为这是整个要点。也就是说,一个单独的DSL来管理它们基本上就是Java。B) 它是递归的,所有操作一次只操作一个字段。因此,“聚合”事物和处理数组是“硬的”/“迟钝的”。
[
  {
    "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"
      }
    }
  }
]