不久前我问了一个类似的问题,但还有其他问题。
我有一个VALID JSON数组:
但是它没有读取task_goalid,因为它位于JSON数组的第二部分,错误显示为“task_goalid没有值”。
知道如何引用JSON数组的第二部分吗?
答案 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
包含以下字段:
第二个JSONObject
包含以下字段:
由于您的第一个JSONObject
不包含task_goalid
字段,因此您将无法从该对象中检索它。如果该字段是可选的,它似乎是可选的,您可以在尝试使用JSONObject.has("task_goalid")
获取该字段之前先检查该字段是否存在,或者使用JSONObject.optString("task_goalid", "No Value")
将其作为可选字符串进行检查。
使用JSONObject.has()
是更安全的选项,因为您可以明确地说明该字段是否存在。使用JSONObject.optString()
可以更轻松地为缺少的字段分配默认值。这两种方法都可以使用,因此您可以选择哪种方法更适合您的需求。