2015-07-21 2 views
0

У меня есть структура JSON, приведенная ниже. Как вы можете видеть, ключ может быть либо массивом, либо объектом. Как я должен справиться с этим? В основном, если существует более одного экземпляра ветви, он становится массивом, иначе он продолжает показывать один объект. Как я должен справиться с этим. Это дает мне ошибку преобразования во время выполнения, так как мой класс POJO содержит Branch branch, и это объявление объекта. Если я хочу обработать объявление массива, это будет Branch[] branch. Как я могу сделать класс Branch вести себя динамически, основываясь на каждом tree_type по положению.Модифицировать динамический ответный ответ JSON (Android)

tree: [ 
{ 
tree_type: 
{ 

    branch: 
    { 
    field1 :val1 
    field2 : val2 
    } 

} 
tree_type: 
{ 

    branch: 
    { 
    field1 :val1 
    field2 : val2 
    } 

} 
tree_type: 
{ 

    branch: 
    [ 
    { 
     field1 :val1 
     field2 : val2 

    } 
    { 
     field1 :val1 
     field2 : val2 

    } 
    { 
     field1 :val1 
     field2 : val2 

    } 
    ] 

} 
} 
], 
+0

дайте мне знать код .. – MPG

ответ

0

Вы должны получить и проверить тип объекта «ветка».

Попробуйте это:

List<Branch> branches = new ArrayList<>(); 

if (jsonObject.has("branch") && jsonObject.get("branch") instanceof JSONObject) { 
    // it is a JSONObject 
    JSONObject branch = jsonObject.getJSONObject("branch"); 

    // parse your branch : Branch branchObject = ... 
    branches.add(branchObject); 

} else if (jsonObject.has("branch") && jsonObject.get("branch") instanceof JSONArray) { 
    // it is an JSONArray 
    JSONArray branchArray = jsonObject.getJSONArray("branch"); 

    // loop branches 
    for (int i = 0; i < branchArray.length(); i++) 
    { 
    if (branchArray.get(i) instanceof JSONObject) { 
     JSONObject branch = branchArray.getJSONObject(i); 

     // parse your branch : Branch branchObject = ... 
     branches.add(branchObject); 
    } 
    } 
} 
+0

Таким образом, этот код должен использоваться внутри моего преобразователя класса, не так ли? –

+0

Я не знаю вашего класса конвертера. Но если у вас есть класс Branch, вам как-то нужно разобрать и заполнить значения из JSON. Я бы сделал это таким образом. –

+0

Хорошо. Лемме попробуй. Вернется. спасибо :) –