Android解析具有不同内容类型的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

我有以下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对象的数组、整数或字符串。我不知道如何解析数据值数组。

根据您的评论,“数据类型”与“数据值”的类型没有关系,这似乎是一个非常糟糕的设计。我建议您更改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检查我的答案。