【问题标题】:reading a json file in R: lexical error: invalid char in json text在 R 中读取 json 文件:词法错误:json 文本中的无效字符
【发布时间】:2017-04-21 08:56:19
【问题描述】:

这是我正在使用的代码示例:

library(jsonlite)
library(curl)

#url
url = "http://www.zillow.com/search/GetResults.htm?spt=homes&status=001000&lt=000000&ht=010000&pr=999999,10000001&mp=3779,37788&bd=0%2C&ba=0%2C&sf=,&lot=0%2C&yr=,1800&singlestory=0&hoa=0%2C&pho=0&pets=0&parking=0&laundry=0&income-restricted=0&pnd=0&red=0&zso=0&days=36m&ds=all&pmf=0&pf=0&sch=100111&zoom=6&rect=-91307373,29367814,-84759521,35554574&p=1&sort=globalrelevanceex&search=maplist&rid=4&rt=2&listright=true&isMapSearch=true&zoom=6"

#json
results_data_json = fromJSON(txt = url)

我曾经能够毫无问题地运行与此类似的代码。现在我收到以下错误:

Error in feed_push_parser(buf) : 
  lexical error: invalid char in json text.
                                   <html><head><title>Zillow: Real
                 (right here) ------^

对此有什么想法吗?

【问题讨论】:

  • 您可能达到了自动查询阈值限制(如果您要检查该 HTML 的整个文本,它甚至可能会这样说)。 IOW:你没有得到 JSON,你得到的 HTML 页面可能有你没有得到 JSON 的原因。
  • @hrbrmstr 这就是我的想法 - 当我转到实际网址时,我似乎必须回答验证码。有没有解决的办法?还是我必须等到限制重置?
  • 我会在他们的网站上四处寻找,看看他们可能会说他们做了什么速率限制。你必须在上述限制内工作,并且——是的——等到你当前的区块被释放。
  • 有趣,我无法复制错误。它运行良好,没有任何错误。在 Rstudio 版本 1.0.44 上使用 Microsoft R 3.3.0
  • Zillow does have APIs 这可能会给你一个更有礼貌的回应。不过,它可能是 XML 格式的。

标签: json r rcurl jsonlite


【解决方案1】:

这发生在我从文件中读取 json 中。代码一天工作,然后第二天我得到了这个错误。尽管我不明白为什么我的解决方案有效,但我最终能够规避该错误。首先,我发现一个 github 帖子建议添加 readLines() 函数。例如。

r_object <- fromJSON(readLines("file.json"))

当我这样做时,json 加载正确,但我收到以下警告:

Warning message:
In readLines("file.json") : incomplete final line found on 'file.json'.

然后,没有特别的原因,我尝试在 JSON 的底部添加额外的一行。最后一个大括号后只有一个空行。这解决了它。不知道为什么。如果有人知道为什么会这样,请发表评论。

【讨论】:

  • 你能描述一下你是如何添加这条线的吗?
  • @Lukas 我在文本编辑器中打开了 json,转到最后一行,然后按 Enter 并保存。
【解决方案2】:

我也无法复制错误。

class(results_data_json)
[1] "list"

我的会话信息:

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7600)

locale:
[1] LC_COLLATE=Spanish_Colombia.1252  LC_CTYPE=Spanish_Colombia.1252    LC_MONETARY=Spanish_Colombia.1252
[4] LC_NUMERIC=C                      LC_TIME=Spanish_Colombia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] curl_2.4     jsonlite_1.1

loaded via a namespace (and not attached):
[1] tools_3.3.2

【讨论】:

    【解决方案3】:

    在我的 Mac 上,这是由 iCloud 引起的。 json文件已经存储在云端,R找不到。下载文件修复了它。这可能是也可能不是您的情况。

    抱歉,我迟到了将近五年。

    【讨论】:

      【解决方案4】:

      作为:R 3.2.2: "rjson" and "RJSONIO" package installed, but error using "fromJSON"

      单独安装软件包是不够的。您需要加载 库也...使用库(rjson)或库(RJSONIO)或...取决于 在调用其中的任何函数之前,您更喜欢哪个包。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多