空元素的颠簸变换问题

问题描述

我的 Jolt 转换有问题,但不知道如何解决。 我在生成的数组中得到“空”元素:

{
  "Verkaufsprodukt": [
    {
      "Produkt": [
        {
          "Elementarprodukt": [
            {
              "ArtID": {
                "bezeichnung": "b","value": "0302"
              },"VersichertePerson": {
                "PartnerID": "1"
              }
            },{
              "ArtID": {
                "bezeichnung": "f"
              },{
              "ArtID": {
                "bezeichnung": "c"
              },{
              "ArtID": {
                "bezeichnung": "a","value": "0301"
              },"VersichertePerson": {
                "PartnerID": "1"
              }
            }
          ]
        }
      ]
    }
  ],"Partner": [
    {
      "Name": "Holgerson","PartnerID": "1","Vorname": "Nils"
    }
  ]
}

我的结果:

{
 "vertragsdetails" : {
   "versichertePersonen" : {
     "versicherungssummenOderLeistungen" : [ null,{
       "kennung" : "0302"
     },null,{
       "kennung" : "0301"
     } ]
   }
 }
}

这是我的规格:

[
  {
    "operation": "shift","spec": {
      "Verkaufsprodukt": {
        "*": {
          "Produkt": {
            "*": {
              "Elementarprodukt": {
                "*": {
                  "VersichertePerson": {
                    "PartnerID": {
                      "1": {
                        "@(3)": {
                          "ArtID": {
                            "value": "vertragsdetails.versichertePersonen.versicherungssummenOderLeistungen[&6].kennung"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

我明白了,空元素来自没有“vaules”的“ArtID”元素,但我怎样才能摆脱它们?

我尝试了一个“操作”:“移位”,但它也删除了我想要的其他元素。

有人可以帮忙吗?谢谢!

解决方法

我发现了一个灵魂。我将此添加到我的规范中:

 {
   "operation": "shift","spec": {
     "vertragsdetails": {
       "versichertePersonen": {
         "versicherungssummenOderLeistungen": {
           "*": {
             "kennung": {
               "@1": "vertragsdetails.versichertePersonen.versicherungssummenOderLeistungen[]"
             }
           }
         }
         "dataToKeep": "vertragsdetails.versichertePersonen.dataToKeep"
       }
     }
   }
 }