在Android中读取多个JSON数组

时间:2013-04-01 21:44:22

标签: android json

不久前我问了一个类似的问题,但还有其他问题。

我有一个VALID JSON数组:

但是它没有读取task_goalid,因为它位于JSON数组的第二部分,错误显示为“task_goalid没有值”。

知道如何引用JSON数组的第二部分吗?

2 个答案:

答案 0 :(得分:2)

在从JSONObject获取key的值之前,使用JSONObject.has()检查JSONObject是否包含密钥。

例如在你的情况下:

 String strgoalid;
 if(json_data.has("task_goalid")){

     //if json_data JSONObject contain task_goalid
   strgoalid=json_data.getString("task_goalid")
  }
  else{
    //if json_data JSONObject not contain task_goalid
    strgoalid="default value here";
  }

答案 1 :(得分:1)

您有JSONArray两个 JSONObject个孩子。

第一个JSONObject包含以下字段:

  • _id
  • TASK_NAME
  • task_day
  • task_priority
  • TASK_DESCRIPTION
  • task_goal
  • 用户

第二个JSONObject包含以下字段:

  • _id
  • task_goalid
  • 用户

由于您的第一个JSONObject不包含task_goalid字段,因此您将无法从该对象中检索它。如果该字段是可选的,它似乎是可选的,您可以在尝试使用JSONObject.has("task_goalid")获取该字段之前先检查该字段是否存在,或者使用JSONObject.optString("task_goalid", "No Value")将其作为可选字符串进行检查。

使用JSONObject.has()是更安全的选项,因为您可以明确地说明该字段是否存在。使用JSONObject.optString()可以更轻松地为缺少的字段分配默认值。这两种方法都可以使用,因此您可以选择哪种方法更适合您的需求。