天天看點

jolt transform (json to json) 嵌套數組進行json格式轉換

輸入的json格式:

[
   {
    "status": "success", 

        "result": [
            {
                "cashierUid": 1111,
                "items": [
                    {
                        "name": "name1"

                    }
                ] 

            }, 
            {
                "cashierUid": 2222, 
                "items": [
                    {
                        "name": "name2"

                    }, 
                    {
                        "name": "name22"
                    }
                ]
            }
        ], 
        "pageSize": 2
    
}, 
{
    "status": "success", 

        "result": [
            {
                "cashierUid": 3333,
                "items": [
                    {
                        "name": "name3"
                    }
                ]
            }, 
            {
                "cashierUid": 4444, 
                
                "items": [
                    {
                        "name": "name4"
                    }, 
                    {
                        "name": "name44"
                    }
                ]
            }
        ], 
        "pageSize": 2
    }
 ]
           

 輸出的json格式:

"data":[{
"cashierUid": 1111,
"name": "name1"
},
{
"cashierUid": 2222,
"name": "name2"
},
{
"cashierUid": 2222,
"name": "name22"
},
{
"cashierUid": 3333,
"name": "name3"
},
{
"cashierUid": 4444,
"name": "name4"
},
{
"cashierUid": 4444,
"name": "name44"
}]
           

spec轉換json:

[{
    "operation": "shift",
    "spec": {
          "*":{  
          "result":{
               "*": { 
                "cashierUid": "aaa[&3].data[&1].cashierUid", 
               //第一個cashierUid擷取輸入json中的cashierUid值
               //後面一個cashierUid指輸出json的key
                "items":"aaa[&3].data[&1].items"
              }
          }
      }
    
   }
  },{
    "operation": "shift",
    "spec": {
        "aaa":{
          "*":{
             "data":{
               "*": { 
                   "items":{

                      "*":{
                          
                          
                      "@(2,cashierUid)":"outt[&5].outer[&3].inner[&1].cashierUid",
                        
                          "@(0,name)":"outt[&5].outer[&3].inner[&1].name"
                         
                      }
                    }
               
             }
          }
        }
        }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "outt":{
        "*":{
      "outer": {
        "*": {
          "inner": {
            "*": "data[]"
          }
        }
      }
    }
  }
  }
  }]