【问题标题】:Problems when I try to extract data from JSON file in R当我尝试从 R 中的 JSON 文件中提取数据时出现问题
【发布时间】:2015-11-03 20:18:03
【问题描述】:

当我尝试从 URL 中的 JSON 格式文件中提取数据时遇到了几个问题

当我使用:jsonlite

grades=jsonlite::fromJSON("url.json") open.connection(con, "rb") 中的错误:HTTP 错误 403。

当我使用 RJONIO 时

等级=RJSONIO::fromJSON("url.json") fromJSON(content, handler, default.size, depth, allowComments, 中的错误: 无效的 JSON 输入

当我使用 rjson 时

等级=rjson::fromJSON("url.json") rjson::fromJSON("url.json") 中的错误: 意外字符“h”

可能是什么?如何修复和提取数据?

谢谢

【问题讨论】:

  • rjson::fromJSON("query to the API I'm trying to reach") 对我来说完全没问题。您要读取的 URL 是什么?
  • 是来自 s3.amazonaws.com 的 json 文件
  • 你能把你发送的查询放在那里吗?因为“url.json”不会返回任何结果..

标签: json r amazon-s3


【解决方案1】:

我刚刚遇到了与 jsonlite 类似的问题,所以我想我会分享一下。

Error in open.connection(con, "rb") : HTTP error 400.

如果所需的 API 调用中有空格,Jsonlite 需要 URLencode()

【讨论】:

  • 谢谢!这对我有用,顺便说一句,我想添加一些外语也需要在 API 调用之前进行编码
【解决方案2】:

rjson 包对我来说完全没问题。向您希望的 API 发送查询可以做的最简单的事情是:

rjson::fromJSON(file = 'query to your API')

以下是查询 OSRM 路由机器的工作示例,它返回瑞士两点之间的路线。

rjson::fromJSON(file = 'http://router.project-osrm.org/viaroute?loc=47,8&loc=47.3,8.5')

结果是您可以直接存储或使用的列表。以下示例为您提供了这两点之间的行程时间。

rjson::fromJSON(file = 'http://router.project-osrm.org/viarouteloc=47,8&loc=47.3,8.5')$route_summary$total_time

只要您的查询是正确的,这应该可以工作。

根据您的情况,最好先尝试阅读一些行,因为您正在阅读的文件似乎很大。

line1 <- rjson::fromJSON(readLines("http://s3.amazonaws.com/databritanica/crimenesLocaciones.json", n = 1))

非常适合我。 readLines方法中的参数n指定要读取的行数。

【讨论】:

  • 谢谢你的回答帮助我
  • 您好,我遇到了需要进行身份验证的问题。我收到“401 未经授权”错误。有没有办法在 fromJSON() 函数中输入我的凭据?
猜你喜欢
  • 2020-07-02
  • 2020-05-08
  • 2020-04-15
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多