我得到了一个JSON响应
{
"edges": [],
"nodes": []
}
如何检查对象是否具有空值并处理大小写?
JSONObject jobj = new JSONObject(line);
JSONArray jArray = jobj.getJSONArray("edges");
if(jArray.length()!=0)
{
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
x.add((float) json_data.getInt("x"));
y.add((float) json_data.getInt("y"));
end
这让我反感:org.json.JSONException:
字符0的输入结束答案 0 :(得分:3)
试试这个:
String jsonString = "{ "edges": [], "nodes": [] }";
JSONObject jsonObject = new JSONObject(jsonString);
if( jsonObject.isNull("edges") == false) {
//do sth
}
if( jsonObject.isNull("nodes") == false) {
//do sth
}
你也可以通过jsonObject.has(“edges”)检查你的json中是否有一些特定的键
您正在将一些\ line \ variable传递给JSONObject构造函数。确保这个变量在我的例子中包含你的整个json字符串,而不是像 “{”或“”edge“:[]'可能问题出现在你的json源代码中,如dokkaebi在评论中提出
答案 1 :(得分:2)
你可以检查:
JSONObject jobj = new JSONObject(line);
if (jobj.getJSONArray("edges").length() == 0) {
System.out.println("JSONArray is null");
}
else{
System.out.println("JSONArray is not null");
//parse your string here
}
答案 2 :(得分:2)
尝试此操作。我只显示一个数组的示例,具体取决于标志值,您可以显示正确的错误消息,或者成功时您可以将解析后的数据绑定到UI组件。
String impuStr = "{\"edges\": [],\"nodes\": []}";
String flag = serverResponse(impuStr);
private String serverResponse(String jsonStr) { String flag =“success”;
JSONObject jobj;
try {
jobj = new JSONObject(jsonStr);
JSONArray jArrayEdges = jobj.getJSONArray("edges");
if(jArrayEdges != null && jArrayEdges.length() > 0)
{
for(int i=0;i<jArrayEdges.length();i++)
{
JSONObject json_data = jArrayEdges.getJSONObject(i);
// process data here
}
}else
flag = "edges_list_empty";
} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
flag = "failure";
}
return flag;
}
答案 3 :(得分:0)
使用简单的java规则。检查数组是否为空,如果数组不存在并且您尝试获取它,它只返回null。只是处理它。如果你知道它会失败,请不要继续解析。只是优雅地存在。
if (myObj != null)
{
... process
}