2

之前的ConceptNet 5.4 API版本返回纯文本 JSON 格式 ( http://conceptnet5.media.mit.edu/data/5.4/c/en/library )。

有人熟悉新的ConceptNet 5.5 API吗?为什么查询返回 html 源而不是像以前的版本( http://api.conceptnet.io/related/c/en/library )那样的纯文本?我没有找到选择纯文本 JSON 格式的选项。


因此,此 Java 代码不适用于新版本。

JsonReader jsonReader = Json.createReader(new URL("http://conceptnet5.media.mit.edu/data/5.4/c/en/library").openStream());
4

1 回答 1

1

API 响应的格式取决于Accept:您的客户端发送的标头。(当 Django REST Framework 执行此操作时,我发现此行为非常方便,因此我在 ConceptNet 的 API 代码中实现了它。)默认响应格式为 JSON。

例如,如果您curl http://api.conceptnet.io/related/c/en/library在命令行运行,您将看到普通的、未缩进的 JSON。如果您在 Web 浏览器中访问那里,它会缩进并用 HTML 包装,因此可以进行语法高亮显示和链接。不同之处在于 Web 浏览器发送标头Accept: text/html

我认为这是您正在使用的 JsonReader 中的一个错误,它正在显式发送Accept: text/html,但它期待的是 JSON 响应,而不是 HTML。看看您是否可以通过配置它发送的标头来解决它。

(如果获取 HTML 是不可避免的,请注意纯 JSON 也存在于 HTML 中的<script type="application/ld+json">标记内。)

于 2017-02-16T19:58:43.303 回答