以下是我的json数组的一部分
{
"format_file_name": [
"/client/compliance_format/payment_of_bonus_act_1965-ce32ec0ee2b94f819ffd2ffdb95ba439.pdf"
]
}
这是我解析它时代码的一部分,
JSONArray format_file_name = innerJobj.getJSONArray("format_file_name");
if (format_file_name != null) {
for (int k = 0; k < format_file_name.length(); k++) {
JSONObject jsonObject1 = format_file_name.getJSONObject(i);
Iterator<String> keys = jsonObject1.keys();
while (keys.hasNext()) {
file = jsonObject1.getString(keys.next());
}
}
}
有些时候format_file_name
的值可能是null
。
在我的代码中,我已经检查过它是null,如果它不是null,那么我解析它并将它分配给一个名为file
的字符串
问题是,
Value null at format_file_name of type org.json.JSONObject$1 cannot be converted to JSONObject
。只有在其值不等于null时才能解析它?答案 0 :(得分:4)
您可以使用JSONObject的isNull
方法。
if(!innerJobj.isNull("format_file_name"))
{
//your rest of codes
}
答案 1 :(得分:2)
尝试使用array.length()
方法。
JSONArray format_file_name = innerJobj.getJSONArray("format_file_name");
if (format_file_name.length() >0) {
for (int k = 0; k < format_file_name.length(); k++) {
JSONObject jsonObject1 = format_file_name.getJSONObject(i);
Iterator<String> keys = jsonObject1.keys();
while (keys.hasNext()) {
file = jsonObject1.getString(keys.next());
}
}
}
答案 2 :(得分:1)
如果您查看getJSONArray
方法的文档:
返回按名称映射的值(如果存在)并且是JSONArray,或者 否则抛出。
因此,如果数组为null,则抛出异常,而不是使用getJSONArray
,而是使用另一个版本:optJSONArray
返回按名称映射的值(如果它存在且是JSONArray)或null 否则。
它返回null而没有异常,所以你可以通过null检查来处理它,试试这个:
JSONArray format_file_name = innerJobj.optJSONArray("format_file_name");
if (format_file_name != null) {
for (int k = 0; k < format_file_name.length(); k++) {
JSONObject jsonObject1 = format_file_name.optJSONObject(k);
...
}
}