R:取消转义 JSON 字符串并构建 JSON 对象

R: Un-escape JSON string and build JSON object

我正在学习使用 jsonlite 库从服务器获取 json 数据。然而,在收到的 json 响应(我无法控制其结构)中,似乎有一个节点,我只能将其描述为一大块 'escaped' JSON 数据,就在json 对象的中间。如何从中构建一个 JSON 对象?我可以提取每个这样的值,但是如果不把它变成一个真正的 JSON 对象,我就不能按原样使用它。

示例:

library(jsonlite)
myFakeJSON <-  '"{"country": "UK","ranking": "45"}"'
json <- toJSON(myFakeJSON)

但是:

> json
[1] "\"{\"country\": \"UK\",\"ranking\": \"45\"}\""

结果不是 json 对象。我做错了什么?如何转义(或取消转义??)接收到的数据?看起来很明显,但对我来说不是:(

我认为你犯了两个错误。第一:引号太多,第二:JSON-hood 测试错误。如果你想使用 toJSON,那么你可以给它一个 R 对象来进行转换,而不是像 JSON string.

> myFakeJSON <-  '{"country": "UK", "ranking": "45"}'
> fromJSON(myFakeJSON)
$country
[1] "UK"

$ranking
[1] "45"

如果您只需要删除花括号 "outside" 上多余的双引号,那么这个正则表达式替换在这个小例子中会成功:

> json <- fromJSON(gsub("\}\\"", "}", gsub("\\"\{","{", myFakeJSON))); json
$country
[1] "UK"

$ranking
[1] "45"