不久前我问了一个类似的问题,但还有更多问题。
我有一个有效的 JSON 数组:
但是,它不会像在 JSON 数组的第二部分中那样读取 task_goalid,错误出现为“task_goalid 没有值”。
知道如何引用 JSON 数组的第二部分吗?
在从 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";
}
你有一个JSONArray
包含两个 JSONObject
孩子。
第一个JSONObject
具有以下字段:
第二个JSONObject
具有以下字段:
由于您的第一个JSONObject
不包含该task_goalid
字段,因此您将无法从该对象中检索它。如果该字段是可选的,它看起来是,您可以在尝试使用它之前先检查该字段是否存在,JSONObject.has("task_goalid")
或者使用JSONObject.optString("task_goalid", "No Value")
.
在这里使用JSONObject.has()
是更安全的选择,因为您可以明确地说该字段是否存在。使用JSONObject.optString()
允许您更轻松地为缺少的字段分配默认值。任何一种方法都行得通,所以由您决定哪一种更适合您的需求。