读取JSON内容


问题内容

我正在使用jsoup抓取一些HTML数据,效果很好。现在,我需要提取一些JSON内容(仅JSON,而不是HTML)。我可以使用jsoup轻松做到这一点,还是必须使用另一种方法来做到这一点?jsoup执行的解析是对JSON数据进行编码,因此无法使用Gson正确解析。

谢谢!


问题答案:

虽然很棒,但Jsoup是HTML解析器,而不是JSON解析器,因此在这种情况下它没有用。如果您尝试过,Jsoup会将返回的JSON隐式放在a中<html><head>,依此类推。你不想那样。
Gson是JSON解析器,因此您绝对需要它。

您的具体问题可能是您不知道如何提供将JSON返回给Gson的URL。在这种情况下,您需要使用URL#openStream()来获取InputStream它,并使用InputStreamReader来装饰它为Reader,最终可以将其馈给Gson#fromJson()接受的Reader

InputStream input = new URL("http://example.com/foo.json").openStream();
Reader reader = new InputStreamReader(input, "UTF-8");
Data data = new Gson().fromJson(reader, Data.class);
// ...