为什么我不能创建JSON对象?

时间:2011-10-18 22:30:51

标签: android json object http-get

我正在使用HTTP Get从我的网站检索JSON格式的字符串。

但是,当我尝试创建JSONObject时,没有任何反应。该对象未创建,我无法访问其中的数组或其他任何内容。

我已经检查过我的应用确实获得了正确的字符串,并且格式正确为JSON格式。

我是否必须以某种特定方式声明它或具有单独的try / catch块...?

我的智慧结束了,所以任何帮助都会非常感激......

降低你拥有我在这个问题上所写的所有代码,尽管它并不多,但我被困住了,不知道该去哪里...

public String result, testString;
public TextView resultText; 
public String url = "http://www.ace.ucv.ro/android/android.php";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainmenu);

    resultText = (TextView) findViewById(R.id.result);

    try {
        HttpGet httpGet = new HttpGet(url);

        result = EntityUtils.toString(new DefaultHttpClient().execute(httpGet).getEntity());

        JSONObject jsonObject = new JSONObject(result);

    } catch (ParseException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }           
    resultText.setText(result);

}

3 个答案:

答案 0 :(得分:1)

您在代码中的URL(http://www.ace.ucv.ro/android/android.php)不会返回Json对象,而是返回JSONArray。

只需用JSONArray替换JSONObject,你就可以了。

答案 1 :(得分:0)

你确定结果中存储的字符串只是一个JSONObject,还是JSONArray?

我记得遇到过类似的问题。

答案 2 :(得分:0)

乍一看,您的代码看起来很熟悉/合理。但也许您应该取消嵌套并记录中间结果 - 这将有助于您了解哪个阶段出错了。例如......

HttpGet httpGet = new HttpGet(url);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpGet);
Log.v("test", "HTTP response = " + response);
HttpEntity entity = response.getEntity();
Log.v("test", "HTTP entity = " + entity);
String content = EntityUtils.toString(entity);
Log.v("test", "HTTP content = " + content);
JSONObject mJsonObj = new JSONObject(mContent);