无法解析Java中的JSON字符串

时间:2015-02-05 20:40:13

标签: java android json parsing jsonobject

所以我有一个JSON字符串:

{
    "dontSend" : 0,
    "dontSendSMS" : 0,
    "dontSendPush" : 0,
    "daysAvail" : [1, 1, 1, 1, 1, 1, 1],
    "allAreas" : ["Dublin 1", "Dublin 2"]
}

这是我的代码:

JSONObject obj = new JSONObject(str);  //str as above
int[] daysAvail = (int[]) obj.get(obj.get("daysAvail"));   //won't work!

我收到此错误:

  

java.lang.String无法强制转换为int []

我也尝试过:

JSONObject obj = new JSONObject(str);  //str as above
JSONArray daysAvail = obj.getJSONArray("daysAvail");   //won't work either!

我收到此错误:

  

java.lang.String无法强制转换为org.json.JSONArray

有人有什么想法吗?

字符串绝对如上所述。它好像Java解析器不能识别[1,1,1,1,1,1]序列。

2 个答案:

答案 0 :(得分:1)

int[] daysAvail = (int[]) obj.get(obj.get("daysAvail"));  

您使用obj.get("daysAvail")的返回值(在您的情况下为JSONArray)作为同一JSONObject的关键字,并将其返回值转换为int[]。我本以期待更简单的事情(如果我没有遗漏一些明显的东西):

JSONArray array = obj.optJSONArray("daysAvail");
if (array != null) { 
  int[] daysAvail = new int[array.length()];
  for(int i=0; i<array.length(); i++){
       daysAvail[i] = array.optInt(i);
  }
}

答案 1 :(得分:-1)

似乎daysAvail不是jsonarray而是字符串 你可以这样做

 JSONObject obj = new JSONObject(str);  //str as above
 String str=obj.getString("daysAvail");
 str=str.substring(1, str.length()-1);
 String[] array=str.split(",");