2011-10-18 30 views
0

我使用HTTP Get從我的網站檢索JSON格式的字符串。爲什麼我無法創建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); 

} 
+0

你的代碼看起來不錯,你如何檢查jsonObject是否被填充? –

+0

首先,在JSONObject之後沒有任何操作完成,比如獲取數組或值等。其次,在執行創建Object之後,沒有在該try/catch塊中寫入的指令。 (用簡單的東西測試,如result =「test」; – Eugen

+1

看起來你正在打印堆棧跟蹤...你能分享它嗎? – Aurora

回答

1

你在代碼中擁有的網址(http://www.ace.ucv.ro/android/android.php)不返回JSON對象,相反,它是一個JSONArray。

只需用JSONArray替換JSONObject就可以了。

+0

好的觀察。 –

+0

非常感謝...它的工作原理。但是,我仍然需要提取並將它們存儲到數組中,用於每個「標題」,「描述」等。有沒有這樣做的機會,或者更容易改變.php腳本? (看到我不能再使用「getJSONArray(」title「);方法) – Eugen

0

確定存儲在結果字符串就是一個JSONObject,還是一個JSONArray?

我記得在類似的問題上磕磕絆絆。

+0

字符串結果應該只存儲我得到的JSON數據從相應的網址...我appologise,我很喜歡這個noob,這是有點超出我的聯盟,但我正在盡我所能去學習 – Eugen

+0

什麼'應該發生'不一定是什麼'正在發生',而且看起來上面的彼得正在證實我的懷疑,這就是爲什麼擁有很多眼睛的計算器很棒。 – Aurora

+0

我會馬上給你一個嘗試... – Eugen

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); 
+0

我已經知道一切正常,直到使用字符串結果創建JSONObject。字符串被應用程序正確獲取並且它是有效的JSON – Eugen