2015-12-31 5 views
2

У меня есть ответ JSON, который выглядит следующим образом:Loop через вложенной 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()) { 
    // 
} 

который, очевидно, только перебирает элементы верхнего уровня (идентификатор 1 и 7 в моем случае).

Как это сделать?

+1

Любая причина не просто использовать Джексона и иметь «Список детей» на классе «Личность»? – 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.

Смежные вопросы