在分配字符串

时间:2016-11-21 11:36:51

标签: json r escaping double-quotes

我正在尝试加载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

1 个答案:

答案 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)