颠簸转换将值放在错误的数组元素中

问题描述

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

那是我的json:

           A    B         C
0  1  0  2.0  3.0  0.720000
1  1  1  3.0  4.0  0.720000
2  2  1  3.0  4.0  0.750000
3  2  1  3.0  4.0  0.750000
39 20 0  2.0  3.0  0.666667
40 20 0  2.0  3.0  0.666667

这是规格:

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

为什么“ kondition”添加到第一个元素而不是第二个元素? 有人可以帮忙吗? 谢谢!

解决方法

问题出在颠簸规范中使用的通配符中,您应该将级别提高3而不是1,例如:

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

例如这样的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" ]
    } ]
  }
}