我试图解析使用rest API的结果。似乎get search / tweet API返回了Json对象而不是Json数组。我的问题是:如果返回的整个对象是一个对象而不是一个数组,我如何分离返回的每个结果?
这是我的代码:
公共类搜索{
private static final String PROTECTED_RESOURCE_URL = "https://api.twitter.com/1.1/search/tweets.json";
public static void main(String[] args) {
// If you choose to use a callback, "oauth_verifier" will be the return
// value by Twitter (request param)
String s="#NHL";
System.out.println(getTweets(s));
}
public static String getTweetsString(String param) {
OAuthService service = new ServiceBuilder()
.provider(TwitterApi.SSL.class).apiKey(AuthInfo.API_KEY)
.apiSecret(AuthInfo.API_SECRET).build();
Token accessToken = new Token(AuthInfo.ACCESS_TOKEN,
AuthInfo.ACCESS_TOKEN_SECRET);
OAuthRequest request = new OAuthRequest(Verb.GET,
PROTECTED_RESOURCE_URL);
request.addQuerystringParameter("q",param);
request.addQuerystringParameter("count", "2");
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println();
return response.getBody();
}
public static ArrayList<Tweet> getTweets(String param){
ArrayList<Tweet> result = new ArrayList<Tweet>();
String tweets = getTweetsString(param);
try {
InputStream is = new ByteArrayInputStream(tweets.getBytes("UTF-8"));
JsonReader reader = Json.createReader(is);
JsonArray lists = reader.readArray();
for(JsonObject rs: lists.getValuesAs(JsonObject.class)){
System.out.println(rs);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
以下错误显示: 无法读取JSON数组,找到了JSON对象
谢谢你的帮助!!!!
答案 0 :(得分:0)
此链接应该让您使用Java(http://answers.oreilly.com/topic/257-how-to-parse-json-in-java/)
进行JSON解析但是既然你试图解析Twitter api返回的JSON对象数组,请看看这个例子...... http://www.bridgefarmconsulting.com/blog/twitter-authentication/ 在博客文章的最后,您将看到作者编写了一个用于解析JSON对象的类... 因此,获取您的响应字符串,根据您要访问的密钥创建解析器类并解析它......
希望你明白了......