2016-02-22 3 views
-1

Я следующий массив JSON:Android массив парсинг JSON с различными типами контента

key_highlights: [ 
    { 
    feature_id: "", 
    name: "body_type", 
    display_name: "Body Type", 
    data_type: "text", 
    data_values: [ 
     "Sedan" 
    ] 
    }, 
    { 
    feature_id: "", 
    name: "exterior_color", 
    display_name: "Exterior Color", 
    data_type: "color", 
    data_values: [ 
     { 
     hexcode: "#ffffff", 
     actual: "Teak Brown", 
     normalized: "other" 
     } 
    ] 
    }, 
    { 
    feature_id: "", 
    name: "transmission_type", 
    display_name: "Transmission Type", 
    data_type: "text", 
    data_values: [ 
     1, 
     2 
    ] 
    } 
}] 

Как приведено в JSON массив data_values ​​может иметь содержание другого типа. Это может быть массив объекта json, integer или string. Я не получаю, как разбирать массив data_values.

+2

Спросите ребят, которые послали вам, что JSON ...? – Shark

+0

Кто создает такой JSON. – Rohit5k2

+0

Вам нужно проверить ключ «data_type» и на основе этого проанализировать «data_values». Например: если это «цвет», проанализируйте кодированный объект цвета json, иначе проанализируйте его как строковый массив. –

ответ

0

Основываясь на вашем комментарии в вопросе о том, что «data_type» не имеет отношения к типу «data_values», его, кажется, очень плохой дизайн. Я хотел бы предложить вам изменить иерархию JSON, но если вы все еще хотите, чтобы идти вперед с данным JSON, используйте следующий код:

Object dataValues = jsonObject.opt("data_values"); 

if(dataValues instanceof String[]) { 

String[] sDataValues = (String[]) dataValues; 

} 
else if(dataValues instanceof int[]) { 

int[] iDataValues = (int[]) dataValues; 

} 
else if(dataValues instanceof JSONArray) { 

JSONArray jArrayDataValues = (JSONArray) dataValues; 

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