将JSON文件导入R时出现意外字符错误

3

我正在尝试将本地的json文件加载到R中。我已经尝试过rjson和RJSONIO包,但是我得到了相同的错误。 例如,使用rjson包,我尝试了以下代码:

testdata<-fromJSON(file="testfile2.json",method="C",unexpected.escape="skip")

然后它返回:

Error in fromJSON(file = "testfile2.json", method = "C", unexpected.escape = "skip") : 
unexpected character '<ff>

Json测试文件是一个非常简单的文件(一旦错误被修复,我有一个更复杂的文件要加载):

{
"item1": "I love jquery4u",
"item2": "You love jQuery4u",
"item3": "We love jQuery4u"
}

希望有人能告诉我做错了什么,谢谢!

由于错误与“转义”有关,您是否尝试将JSON文件变成一行呢?以防换行符引起的问题。 - Preston Badeer
你尝试过使用jsonlite吗?文件的编码是什么? - timelyportfolio
感谢您的帮助。WhiteVikings的答案解决了问题! - Fred
1个回答

3

很可能是编码问题(正如 timelyportfolio 所建议的那样)。出现意外字符一致性地表明存在 UTF-16 BOM(字节顺序标记)字符。

如果您运行

f <- file("testfile2.json", "rb")
bytes <- readBin(f, integer(), n = 500, size = 1)
close(f)
bytes

你应该获得

 [1] 123  10  34 105 116 101 109  49  34  58  32  34  73  32 108 111 118 101
[19]  32 106 113 117 101 114 121  52 117  34  44  10  34 105 116 101 109  50
[37]  34  58  32  34  89 111 117  32 108 111 118 101  32 106  81 117 101 114
[55] 121  52 117  34  44  10  34 105 116 101 109  51  34  58  32  34  87 101
[73]  32 108 111 118 101  32 106  81 117 101 114 121  52 117  34  10 125  10

针对你问题中的示例 JSON ,以及一个没有奇怪字符的文件。

但如果输出中出现了“-1”或“255”,则表示编码错误,您需要在可以指定编码的编辑器中打开并重新保存原始 JSON 文件。


你太棒了!它起作用了。我在编辑器中将其更改为UTF-8,现在错误已经消失了。 - Fred
你有没有关于编码的免费资源推荐?这样我以后就可以自己弄明白了。 - Fred
@Fred 我想不出有什么方法。但你必须查看文件中实际的字节。有几个免费的专用十六进制编辑器可以帮助你。一些编辑器也可以显示为十六进制。像Mac或Unix上的od这样的简单命令行工具也可以显示为十六进制。您还需要基本了解例如ASCII,UTF8和UTF16之间的区别,并可能想知道BOM标记是什么。这就足以解决典型的编码问题。 - WhiteViking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接