2011-12-08 52 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