【问题标题】:Unexpected character json error in rr中的意外字符json错误
【发布时间】:2015-09-25 19:23:05
【问题描述】:

我收到以下错误消息,说明此代码旨在将 Instagram 帖子读入 r。前 20 个帖子中的其他代码已成功读取,但 Instagram 希望您请求“next_url”以获取更多帖子块。我查看了此错误的类似答案,但在我的代码中找不到错字。想知道它是否可能来自需要调整的 API。我是 R 新手,希望我能恰当地解释这一点。我将不胜感激。

Error in fromJSON(getURL(paste(next_url, token, sep = "")), unexpected.escape = "keep") : 
  unexpected character: p
In addition: Warning message:
In fromJSON(getURL(paste(next_url, token, sep = "")), unexpected.escape = "keep") :
  unexpected escaped character '\ ' at pos 26. Keeping value.
  username <- "XXXX"
    if(grepl(received_profile$username,username))
  {
    user_id <- received_profile$id
    media <- fromJSON(getURL(paste(next_url,token,sep="")),unexpected.escape = "keep")
    df1 = data.frame(no = 1:length(media$data))

    for(i in 1:length(media$data))
    {
      #comments
      df1$comments[i] <-media$data[[i]]$comments$count

      #likes:
      df1$likes[i] <- media$data[[i]]$likes$count

      #date
      df1$date[i] <- toString(as.POSIXct(as.numeric(media$data[[i]]$created_time), origin="1970-01-01"))
    }
    df <- rbind(df, df1)    
  }else
  {
    print("Error: User not found!")
  }

【问题讨论】:

  • 你能举一个问题中下一个网址的例子
  • 给你。如果您需要更多信息,请告诉我:“api.instagram.com/v1/users/182558180/media/…
  • 这里可以确定的一件事是..如果您可以在浏览器中点击相同的 url 并复制您在问题本身中收到的 json。这将使调试变得容易。

标签: json r


【解决方案1】:

我可以通过使用从 Instagram 返回的 JSON 响应中的 pagination 对象中提取 next_url 的代码扩展您的代码 sn-p 来重现您的问题。

当使用 rjson::fromJSON 解析 JSON 响应时,我收到类似的错误

Error in rjson::fromJSON(js) : unexpected character: i

但是,使用RJSONIO::fromJSON 解析完全相同的字符串就可以了!此外,该字符串使用在线 JSON 验证器验证为正确的 JSON。

这强烈指向rjson::fromJSON 中的一个错误。您现在可能想改用 RJSONIO 包。

不幸的是,这些 Instagram 回复非常庞大。我会看看是否可以将 JSON 输出简化为可管理的内容,以便在此处发布详细信息。 (我试图避免链接到外部网站上的数据。)

我怀疑 Instagram 用户名存在编码问题。

【讨论】:

  • 非常感谢您的回复。我用 RJSONIO 而不是 RJSON 尝试了相同的代码,并得到了这个错误消息: fromJSON 中的错误(内容,处理程序,default.size,深度,allowComments,:无效的 JSON 输入你能告诉我如何修改我的 fromJSON 字符串以使用RJSONIO?
  • @SteveF 您运行的准确的RJSONIO::fromJSON 命令是什么?
  • 这是代码的确切行:media
  • 可以确认“这强烈指向 rjson::fromJSON 中的错误。您现在可能希望使用 RJSONIO 包。”
【解决方案2】:

使用 RJSONSIO 和 Rcpp,你应该可以得到你想要的:

media1 <- fromJSON(getURL(paste(url,token,sep="")
next_url <- media1$pagination[1]
media2 <- fromJSON(getURL(next_url))

不需要在 fromJSON() 中指定额外的参数

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2014-01-13
    • 1970-01-01
    • 2013-06-02
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2012-01-21
    相关资源
    最近更新 更多