我正在尝试从Facebook Graph API Explorer中读取一些数据到R中进行一些文本分析。但是,看起来JSON提要中有未转义的反斜杠,导致rjson为barf。以下是导致问题的输入类型的最小示例。
library(rjson)
txt <- '{"data":[{"id":2, "value":"I want to \\"post\\" a picture\\video"}]}'
fromJSON(txt)
(请注意,\\"
和\\video
处的双反斜杠将在解析后转换为单反斜杠,这就是我实际数据中的内容。)
我也尝试过RJSONIO程序包,它也会出错,甚至有时会崩溃R.
以前有人遇到过这个问题吗?有没有办法解决这个问题,即手动追查每一个错误?可能有数兆字节的JSON被解析,并且错误消息对于有问题的输入的确切位置信息不足。
答案 0 :(得分:0)
只需使用双反斜杠替换没有转义双引号,制表符或换行符的反斜杠。
在正则表达式中,'\\\\'
被转换为一个反斜杠(需要两个转义级别,一个用于R,一个用于正则表达式引擎)。我们需要perl正则表达式引擎才能使用前瞻。
library(stringr)
txt2 <- str_replace_all(txt, perl('\\\\(?![tn"])'), '\\\\\\\\')
fromJSON(txt2)
答案 1 :(得分:0)
问题是您正在尝试解析无效的JSON:
library(jsonlite)
txt <- '{"data":[{"id":2, "value":"I want to \\"post\\" a picture\\video"}]}'
validate(txt)
问题是picture\\video
部分,因为\v
不是有效的JSON转义序列,即使它是R和其他一些语言中的有效转义序列。也许你的意思是:
library(jsonlite)
txt <- '{"data":[{"id":2, "value":"I want to \\"post\\" a picture\\/video"}]}'
validate(txt)
fromJSON(txt)
问题的任何一种方法都是在生成无效JSON的JSON数据源上。如果这些数据确实来自Facebook,那么您在其API中发现了一个错误。但更有可能的是你没有正确地检索它。