Android不解析JSON数组

Android不解析JSON数组,android,json,parsing,Android,Json,Parsing,我目前正试图在代码中解析JSON数组,但问题是它从未进入try块 这是我的密码: protected Void doInBackground(Void... arg0) { JsonParser jsonParser = new JsonParser(); String json = jsonParser.getJSONFromUrl("http://hills.ccsf.edu/~jpark41/ViB/sample.json"); i

我目前正试图在代码中解析JSON数组,但问题是它从未进入try块

这是我的密码:

protected Void doInBackground(Void... arg0) {

        JsonParser jsonParser = new JsonParser();

        String json =  jsonParser.getJSONFromUrl("http://hills.ccsf.edu/~jpark41/ViB/sample.json");


        if(json != null) {

 Log.i("JSON: ", "NOT NULL"); // This log executes!!

            try
            {
                Log.i("we: ", " out here"); // This does not!!

                JSONObject jObj = new JSONObject(json);
                JSONArray jsar = new JSONArray(json);

                Iterator<String> iter = jObj.keys();
                while (iter.hasNext()) {
                    String key = iter.next();
                    try {
                        JSONObject value = (JSONObject)jObj.get(key);
                        id = value.getString("id");
                        thumb = value.getString("thumb");
                        media = value.getString("media");
                        title = value.getString("title");
                    } catch (JSONException e) {
                        // Something went wrong!
                    }
                    now_playing = id;
                    earned = title;

                }

            } catch (JSONException e) {
                Log.i("we NOT: ", " out here");
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        return null;
    }
受保护的Void doInBackground(Void…arg0){
JsonParser JsonParser=新的JsonParser();
字符串json=jsonParser.getJSONFromUrl(“http://hills.ccsf.edu/~jpark41/ViB/sample.json”);
if(json!=null){
Log.i(“JSON:,“NOTNULL”);//此日志将执行!!
尝试
{
Log.i(“我们:,“在这里”);//这不是!!
JSONObject jObj=新的JSONObject(json);
JSONArray jsar=新的JSONArray(json);
迭代器iter=jObj.keys();
while(iter.hasNext()){
String key=iter.next();
试一试{
JSONObject值=(JSONObject)jObj.get(key);
id=value.getString(“id”);
thumb=value.getString(“thumb”);
媒体=value.getString(“媒体”);
title=value.getString(“title”);
}捕获(JSONException e){
//出了点问题!
}
现在_playing=id;
挣得=头衔;
}
}捕获(JSONException e){
Log.i(“我们不是:,“在这里”);
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
返回null;
}

“我们在这里”从未被记录,只有“我们不在这里”。为什么try块从不执行?我没有太多使用android解析JSON的经验,所以我肯定我遗漏了一些东西。谢谢你的帮助。

当我注释掉JSONObject jObj=newjsonobject(json);并将迭代器替换为基本的for循环,这一切都起作用了。谢谢大家的帮助。

堆栈跟踪是什么?如果打印“我们不在这里”,则会引发异常。堆栈跟踪将有助于识别问题。您是否尝试在调试器中单步执行它?我的假设是
getJSONFromURL
失败或返回null。如果您使用框架将Json解析为POJO,您将省去很多麻烦。查看Gson或Jackson,请发布您的logcat输出。