之前的 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());
答案 0 :(得分: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是不可避免的,请注意,<script type="application/ld+json">
标记内的HTML中也存在普通JSON。)