【问题标题】:parse error: premature EOF in fromJSON() when opening bad URL解析错误:打开错误 URL 时 fromJSON() 中的过早 EOF
【发布时间】:2021-02-16 09:42:51
【问题描述】:

这个语句给了我一个错误。

somevar <- fromJSON('https://www.predictit.org/api/Public/GetMarketChartData/99999?timespan=90d&maxContracts=9999&showHidden=true')

Error in parse_con(txt, bigint_as_char) : parse error: premature EOF
                                       
                     (right here) ------^

如何进行设置,以便在出现错误时我的 R 脚本可以处理它而不会崩溃?相反,如果fromJSON() 在打开 URL 时遇到错误,我希望 somevar 成为空白字符串或 FALSE

【问题讨论】:

    标签: r


    【解决方案1】:

    这是我通常的做法,如果 (a) 没有与服务器或文件的连接,但 (b1) 安全地获得一个空 json (即list())文件,但结果是一个不可读/格式错误的 json。 实现 purrr 的 safely()possibly() 应该更短,但是你需要区分连接错误和解析错误。

      safe_fromJSON <- function(txt, encoding = "UTF-8") {
      
      obj_lines <- readLines(con = txt, encoding = encoding)
      
      check_json <- jsonlite::validate(txt = obj_lines)
      if(check_json == TRUE ) {
        obj_json <- fromJSON(txt = obj_lines)
      } else {
        obj_json <- fromJSON(txt = "[]") # "[]" represents an empty json.
      }
      
      obj_json
    }
    
    safe_fromJSON(txt = "https://www.predictit.org/api/Public/GetMarketChartData/99999?timespan=90d&maxContracts=9999&showHidden=true")
    list()
    

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 2012-09-14
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多