所以我有一个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]序列。
答案 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(",");