我正在尝试加载JSON文件并在R中进行一些分析。
JSON文件包含以下部分:
'{"property":"blabla \"some goofy name\" more blabla"}'
这意味着有一些双引号 属性的字符串值。这应该是有效的JSON(或不是?)。
问题是,如果我尝试用jsonlite或任何其他库解析它,我需要将它分配给R中的字符串变量。就像那样:
a = '{"property":"blabla \"some goofy name\" more blabla"}'
但是,如果我输入a
并按回车键,我就会回复:
[1] "{\"property\":\"blabla \"some goofy name\" more blabla\"}"
这意味着现有的\"
实例现在等于实际的"
实例,所以我甚至无法用正则表达式替换它们。如果我将它提供给任何JSON解析库,则会出现无效字符错误等。
有没有办法'抓住'那些讨厌的\"
实例,然后R认为它们与普通"
相同,这样我就可以消除\"
并继续JSON解析?
与类似issue的区别在于内部引号已经转义,形成了有效的JSON。我的最终挑战是解析这个JSON:http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30
答案 0 :(得分:0)
在OP更新后更新了答案
我想我可能仍然没有完全理解你想要完成的事情,所以如果这不是你想要的输出,请告诉我。我没有处理你文件中的换行符,因为这看起来并不相关。您的文件包含的字符串包含" \" Bienenkorb \""如你所描述的那样
url <- "http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30"
parsed <- jsonlite::fromJSON(url)
print(parsed$data$activity_project_id.project_name[3])
#[1] "Neugestaltung und\nModernisierung des\nRestaurants \"Bienenkorb\""
cat(parsed$data$activity_project_id.project_name[3])
#Neugestaltung und
#Modernisierung des
#Restaurants "Bienenkorb"
如果要将其分配给字符串然后解析它,可以执行s <- readLines(url); parsed <- jsonlite::fromJSON(s)
。