2011-12-08 94 views
0

我試圖使用JSON庫從獲取搜索功能中使用twitter信息。我得到的錯誤:
一個JSONArray文本必須以'['在1 [字符2行1]從字符串轉換爲Java中的JSONArray或JSONObject

因此它基本上是錯誤的形式。有些人說這需要成爲一個對象,但每次我調用構造函數時,都會說它不能以字符串作爲輸入。如何將此字符串轉換爲JSONArray的形式,以便我可以訪問它的元素。

這裏是我的代碼:

URL twitterSource = new URL("http://search.twitter.com/search.json?q=google"); 
ByteArrayOutputStream urlOutputStream = new ByteArrayOutputStream(); 

IOUtils.copy(twitterSource.openStream(), urlOutputStream); 
String urlContents = urlOutputStream.toString(); 

// parse JSON 
System.out.println(urlContents); 
JSONArray jsonArray = new JSONArray(urlContents); 

// use 
for (int i = 0; i < jsonArray.length(); i++) { 
    JSONObject jsonObject = jsonArray.getJSONObject(i); 

    System.out.println(jsonObject.getString("id")); 
    System.out.println(jsonObject.getString("text"));    
    System.out.println(jsonObject.getString("created_at")); 
} 

我print語句顯示字符串包含:

{"completed_in":0.318,"max_id":144850937012428800,"max_id_str":"144850937012428800","next_page":"?page=2..................... 

這是一個JSON對象的形式;但它並不是一個真正的對象。它仍然是一個字符串。我正在打印一個字符串。我可以把它變成一個對象,或者更好的是一個JSONArray,這樣我就可以實際訪問它的元素。

回答

2

這是一個JSON 對象,而不是一個數組。

+0

謝謝。我如何訪問JSON對象的元素? – Randnum

+0

你指的是哪個對象? urlContents是一個字符串。我傳遞給JSONArray()的構造函數。我沒有發佈JSON文件的完整字符串,但是它的JSON格式中包含許多具有我想要的內容的元素。 – Randnum

+0

如果您說urlContents是一個JSON對象,那麼我該如何將它轉換爲數組?不應該「新的JSONArray(urlContent)」這樣做? – Randnum