Jolt Transformation 将值放在错误的数组元素中

Jolt Transformation put value in the wrong array element

我的 Jolt 转换有问题,但不知道如何解决。 该值被添加到错误的数组元素而不是它所属的元素。

那是我的 JSON :

{
  "Verkaufsprodukt": [
    {
      "Produkt": [
       {
         "Kurzbeschreibung": "A"
       },
       {
         "Kurzbeschreibung": "B",
         "Kondition": [
           {
             "Bezeichnung": "something"
           }
         ]
       }
     ]
   }
  ]
}

这是规范:

[
  {
    "operation": "shift",
    "spec": {
      "Verkaufsprodukt": {
        "*": {
          "Produkt": {
            "*": {
              "Kurzbeschreibung": "vertragsdetails.deckungen[].bezeichnung",
              "Kondition": {
                "*": {
                  "Bezeichnung": "vertragsdetails.deckungen[&1].kondition"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "vertragsdetails": {
        "deckungen": "MANY"
      }
    }
  }
]

我期待这个:

{
  "vertragsdetails": {
    "deckungen": [
      {
        "bezeichnung": "A"
      },
      {
        "bezeichnung": "B",
        "kondition": "something"
      }
    ]
  }
}

但得到了这个:

{
  "vertragsdetails": {
    "deckungen": [
      {
        "bezeichnung": "A",
        "kondition": "something"
      },
      {
        "bezeichnung": "B"
      }
    ]
  }
}

为什么“条件”添加到第一个元素而不是它所属的第二个元素? 有人可以帮忙吗? 谢谢!

问题出在您在 jolt 规范中使用的通配符上,您应该向上 3 级而不是 1 级,例如:

"Bezeichnung": "vertragsdetails.deckungen[&3].kondition"

a json 例如:

{
  "Verkaufsprodukt": [
    {
      "Produkt": [
        {
          "Kurzbeschreibung": "A"
        },
        {
          "Kurzbeschreibung": "B",
          "Kondition": [
            {
              "Bezeichnung": "something"
            },
            {
              "Bezeichnung": "andere something"
            },
            {
              "Bezeichnung": "noch andere something"
            }
          ]
        },
        {
          "Kurzbeschreibung": "C",
          "Kondition": [
            {
              "Bezeichnung": "x"
            },
            {
              "Bezeichnung": "andere x"
            },
            {
              "Bezeichnung": "noch andere x"
            }
          ]
        }
      ]
    }
  ]
}

会变成这样:

{
  "vertragsdetails" : {
    "deckungen" : [ {
      "bezeichnung" : "A"
    }, {
      "bezeichnung" : "B",
      "kondition" : [ "something", "andere something", "noch andere something" ]
    }, {
      "bezeichnung" : "C",
      "kondition" : [ "x", "andere x", "noch andere x" ]
    } ]
  }
}