2016-09-14 52 views
1

無效JSON我試圖用java jsoup和JSON-簡單庫正從Twitter的API

Document doc = Jsoup.connect("https://api.twitter.com/1.1/search/tweets.json") 
      .header("Authorization", "Bearer " + token) 
      .header("charset", "utf-8") 
      .data("q", q) 
      .data("count", "2") 
      .data("max_id", currentStartId) 
      .ignoreContentType(true) 
      .get(); 

然後我收到一些JSON對象獲得來自Twitter的API數據。但是,當我嘗試分析它

String response = doc.text(); 
JSONObject requestObj = (JSONObject) parser.parse(response); 

我在快樂的JSON位置收到此錯誤

Exception in thread "main" Unexpected character (\) at position 3535. 
at org.json.simple.parser.Yylex.yylex(Yylex.java:610) 
at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) 
at org.json.simple.parser.JSONParser.parse(JSONParser.java:118) 
at org.json.simple.parser.JSONParser.parse(JSONParser.java:81) 
at org.json.simple.parser.JSONParser.parse(JSONParser.java:75) 
"description":""\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438". \u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u0430\u044f \u0434\u0435\u043b\u043e\u0432\u0430\u044f \u0433\u0430\u0437\u0435\u0442\u0430" 
+0

Jsoup對於這種api調用來說確實是一個糟糕的客戶端。它通常用於網頁抓取,但事實並非如此。考慮使用通用的寧靜客戶端,Apache HttpClient甚至twitter4j。 – rmlan

回答

0

你不應該使用Jsoup作爲其設計解析並清理HTML頁面。無論它吐出什麼東西都不太可能,Json會幫你處理。

https://jsoup.org/apidocs/org/jsoup/Jsoup.html#connect-java.lang.String-

使用獲取並解析HTML頁面。

正如以上評論所暗示的,您應該使用Twitter4J代替它。甚至可以在使用URLConnection或OkHttp獲取後直接處理JSON。