1

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

例子:

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

但:

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

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

4

1 回答 1

1

我认为你犯了两个错误。第一:引号太多,第二:对 JSON-hood 的错误测试。如果你想使用 toJSON,那么你会给它一个 R 对象进行转换,而不是努力作为 JSON 字符串。

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

$ranking
[1] "45"

如果您只需要删除花括号“外部”上的额外双引号,那么这个正则表达式替换在这个小例子中成功:

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

$ranking
[1] "45"
于 2016-02-02T19:03:10.380 回答