Android解析具有不同内容类型的json数组
我有以下json数组:Android解析具有不同内容类型的json数组,android,json,Android,Json,我有以下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: "Ext
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对象的数组、整数或字符串。我不知道如何解析数据值数组。根据您的评论,“数据类型”与“数据值”的类型没有关系,这似乎是一个非常糟糕的设计。我建议您更改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;
}
问那些给你发JSON的人?谁创建了这样的JSON。你需要检查“data_type”键,并根据该键解析“data_值”。例如:如果是“color”,则解析编码的color json对象,否则将其解析为字符串数组。@HarishSridharan我已经在使用data_type键了。这只是个傻瓜。即使使用“data_type”->文本,服务器也可能返回json对象数组。@Nitish检查我的答案。