Can';t在Java中解析JSON字符串

Can';t在Java中解析JSON字符串,java,android,json,parsing,jsonobject,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 = (i

我有一个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,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(",");
在本例中,您使用
obj.get(“daysAvail”)
的返回值作为同一
JSONObject
的键,并将其返回值强制转换为
int[]
。我本以为会有更简单的事情发生(如果我没有遗漏一些明显的事情):

JSONArray数组=obj.optJSONArray(“daysAvail”);
如果(数组!=null){
int[]daysAvail=new int[array.length()];

对于(int i=0;i),它不是字符串。它肯定没有被引用。感谢您的评论。但是当您执行obj.getString(“daysAvail”)时,它是否会返回任何值?您确定,
string str
就是您提供的字符串。请在馈送到JSONObject之前尝试打印字符串。只需添加一个
System.out.println(str)
My bad.[…]实际上被引用了。我刚刚再次打印了JSONObject…感谢您帮助我调试…如果我浪费了任何人的时间,我感到抱歉…;(我们所有人都会这样做…一次或多次。)我的错..复制/粘贴错误。感谢您指出@SarveshKumarSinghI坚信,OP的JSON字符串有问题。他发布的JSON是有效的,尽管我在Android上做了所有这些。也许这与此有关?
int[] daysAvail = (int[]) obj.get(obj.get("daysAvail"));  
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);
  }
}