jsonlite解析英国新冠CSV内嵌JSON时遇None触发词法错误问题
错误根因
新版数据中内嵌的JSON使用了Python语法的None表示空值,不符合标准JSON规范(标准JSON空值为null),因此jsonlite解析时触发词法错误。
解决方法
在原有字符串替换逻辑中,新增将None替换为null的规则即可,修正后的代码如下:
library(tidyverse) library(jsonlite) # 读取最新国家看板数据 df <- read_csv("<filepath>") df |> mutate(vaccinationsAgeDemographics = map(vaccinationsAgeDemographics, ~{ # 先替换单引号为双引号,再替换None为标准JSON的null formatted_str <- str_replace_all(., c("'" = "\"", "None" = "null")) fromJSON(formatted_str) })) |> unnest(cols = c(vaccinationsAgeDemographics))
简化测试代码修正版
fromJSON(df$vaccinationsAgeDemographics[1] |> str_replace_all(c("'" = "\"", "None" = "null")))
如果替换后仍存在解析异常,可检查是否还有其他非标准JSON语法,比如部分场景下可能出现True/False大小写不符合JSON要求的问题(JSON要求小写的true/false),遇到时同步新增替换规则即可。
内容的提问来源于stack exchange,提问作者Joel Kandiah
相关产品推荐
相关产品推荐

