【发布时间】:2014-06-02 11:48:47
【问题描述】:
我在从 URL 接收 JSON 数组时遇到问题。我已经验证我的链接没有问题,并且返回了正确的 JSON 数组,它甚至显示在错误消息中。我不确定这意味着什么。
错误:
04-17 21:34:04.435 21842-22217/edu.appdesign.leaguestats W/System.err﹕ org.json.JSONException: Not a primitive array: class org.json.JSONArray
04-17 21:34:04.435 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at org.json.JSONArray.<init>(JSONArray.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at edu.appdesign.leaguestats.GetStaticData$GetSummary.doInBackground(GetStaticData.java:90)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at edu.appdesign.leaguestats.GetStaticData$GetSummary.doInBackground(GetStaticData.java:76)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
04-17 21:34:04.445 21842-22217/edu.appdesign.leaguestats W/System.err﹕ at java.lang.Thread.run(Thread.java)
代码:
JSONArray jsonArray = jsonArrayParser.getJSONFromUrl(url2);
JSONArray leagueArray = new JSONArray(jsonArray);
summary.rTier = leagueData.getString("tier");
summary.rLeague = leagueData.getString("leagueName");
summary.rRank = leagueData.getString("rank");
summary.rLeaguePoints = leagueData.getString("leaguePoints");
JSON:
[{
"isHotStreak": false,
"isFreshBlood": false,
"leagueName": "Udyr's Lancers",
"isVeteran": false,
"tier": "GOLD",
"lastPlayed": -1,
"playerOrTeamId": "23591778",
"leaguePoints": 0,
"rank": "V",
"isInactive": false,
"queueType": "RANKED_SOLO_5x5",
"playerOrTeamName": "NV43",
"wins": 83
}]
这一切都是在 AsyncTask 中完成的,所以没有问题。知道是什么原因造成的吗?
【问题讨论】:
-
查看您尝试获取的 JSON 会很有帮助
-
JSONArray leagueArray = new JSONArray(jsonArray);看起来很可疑 -
@meda 将 JSON 添加到我的帖子中。
-
@dcharms 你是对的。稍微修改了我的代码,它按预期工作。
-
很高兴你能弄明白!如果您的数组中有多个对象,我将发布一个关于如何处理此问题的答案。