2015-12-31 117 views
2

我有一個JSON響應,看起來像這樣:環路通過嵌套JSON陣列

{ 
    "1":{ 
     "id":"1", 
     "user_id":"1", 
     "children":[ 
      { 
       "id":"2", 
       "user_id":"2", 
       "children":[ 
        { 
         "id":"3", 
         "user_id":"3", 
         "children":[ 
          { 
           "id":"4", 
           "user_id":"2", 
           "children":[ 

           ] 
          } 
         ] 
        }, 
        { 
         "id":"5", 
         "user_id":"1", 
         "children":[ 

         ] 
        } 
       ] 
      }, 
      { 
       "id":"6", 
       "user_id":"2", 
       "children":[ 

       ] 
      } 
     ] 
    }, 
    "7":{ 
     "id":"7", 
     "user_id":"2", 
     ... 
    } 
} 

正如你可以看到,我已經嵌套陣列(children)。我需要遍歷這個JSON響應,遍歷每個嵌套數組,直到它運行到一個空的children數組,然後退後一步繼續處理剩下的項目。

我爲響應一個模型類,所以我現在的代碼如下所示:

for (Post post : postResponse.getData()) { 
    // 
} 

這顯然只能通過頂級項目進行迭代(ID 17在我的情況)。

我該怎麼做?

+1

任何理由不只是使用傑克遜,並在'Person'類上有一個'List children'? – chrylis

+0

我敢打賭,有一打重複的問題... – Raptor

+0

請張貼更多的代碼,你嘗試。有助於延長幫助 – dullpointer

回答

1

你需要一個遞歸函數。

function iterateTree(object) { 
    if (!object) { //recursion stop criteria || you need to implement what your stop criteria is 
    return; 
    } 
    //doSomthingWithObject(); 
    iterateTree(object.children); 
} 

我相信你知道如何在java中使用它。