0

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

我有一个有效的 JSON 数组:

但是,它不会像在 JSON 数组的第二部分中那样读取 task_goalid,错误出现为“task_goalid 没有值”。

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

4

2 回答 2

3

在从 JSONObject 获取键值之前,使用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";
  }
于 2013-04-01T21:48:43.403 回答
1

你有一个JSONArray包含两个 JSONObject孩子。

第一个JSONObject具有以下字段:

  • _ID
  • 任务名称
  • 任务日
  • 任务优先级
  • 任务描述
  • 任务目标
  • 用户

第二个JSONObject具有以下字段:

  • _ID
  • task_goalid
  • 用户

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

在这里使用JSONObject.has()是更安全的选择,因为您可以明确地说该字段是否存在。使用JSONObject.optString()允许您更轻松地为缺少的字段分配默认值。任何一种方法都行得通,所以由您决定哪一种更适合您的需求。

于 2013-04-01T21:52:01.297 回答