2016-09-02 24 views
0

我嘗試使用Jolt來壓扁一些JSON數組。我發現如何在第一級做到這一點,但我需要「遞歸地」做到這一點。顛簸 - 反覆過程

關於輸入:

  • 我要扁平化陣列名"objects"
  • 內的對象都含有"name"屬性,但其他屬性都是不常見的

這裏是一個簡單樣品:

{ 
    "objects": [ 
     { 
      "name": "first", 
      "type": "FIRST", 
      "1st_attr": 0 
     }, 
     { 
      "name": "second", 
      "type": "SECOND", 
      "2nd_attr": 0 
     } 
    ], 
    "sub": { 
     "objects": [ 
      { 
       "name": "third", 
       "type": "THIRD", 
       "3rd_attr": 0 
      } 
     ] 
    } 
} 

這裏是輸出我想:

{ 
    "first" : { 
    "1st_attr" : 0, 
    "name" : "first", 
    "type" : "FIRST" 
    }, 
    "second" : { 
    "2nd_attr" : 0, 
    "name" : "second", 
    "type" : "SECOND" 
    }, 
    "sub" : { 
    "third" : { 
     "3rd_attr" : 0, 
     "name" : "third", 
     "type" : "THIRD" 
    } 
    } 
} 

該規範我有扁平化的第一級,但是我想有它拉平各個層面(meanining,不只是第二;)...):

[ 
    { 
    "operation": "shift", 
    "spec": { 
     "objects": { 
     "*": { 
      "@": "@(1,name)" 
     } 
     }, 
     "*": "&0" 
    } 
    } 
] 

感謝您的幫助

回答

1

隨着顛簸,你必須知道在你輸入「對象」陣列。沒有辦法「找到並壓扁所有數組,無論它們在輸入文檔中的位置」。

規格爲您提供的輸入和輸出:

[ 
    { 
    "operation": "shift", 
    "spec": { 
     "objects": { 
     "*": "@(0,name)" 
     }, 
     "sub": { 
     "objects": { 
      "*": "&[email protected](0,name)" 
     } 
     } 
    } 
    } 
] 

編輯:添加&2.sub.third,而不是僅僅third