【问题标题】:getting invalid json from twitter api从 twitter api 获取无效的 json
【发布时间】:2017-01-22 13:44:01
【问题描述】:

我正在尝试使用 java jsoup 和 json-simple 库从 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 对象。但是当我尝试解析它时

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

我收到了这个错误

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)

在 json 位置 3535

"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"

【问题讨论】:

  • Jsoup 对于这种 api 调用来说确实是一个糟糕的客户端。它通常用于网页抓取,但事实并非如此。考虑使用通用的 restful 客户端、Apache HttpClient 甚至 twitter4j。​​

标签: java json twitter


【解决方案1】:

您不应该将 Jsoup 用作其为解析和清理 HTML 页面而设计的。它吐出的任何东西都不太可能对您处理有用的 Json。

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

用于获取和解析 HTML 页面。

正如上面的评论所暗示的,你应该使用 Twitter4J 来代替它。甚至在使用 URLConnection 或 OkHttp 获取后直接处理 JSON。

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2014-05-08
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2018-08-30
    • 2016-02-01
    相关资源
    最近更新 更多