我对R中的RJSONIO包中的fromJSON函数有一个问题。
我有一个要用fromJSON读取的json文件
{"indy movies" :[
{
"name" : "Raiders of the Lost Ark",
"year" : 1981,
"actors" : {
"Indiana Jones": "Harrison Ford",
"Dr. René Belloq": "Paul Freeman"
},
"producers": ["Frank Marshall", "George Lucas", "Howard Kazanjian"],
"budget" : 18000000,
"academy_award_ve": true
},
{
"name" : "Indiana Jones and the Temple of Doom",
"year" : 1984,
"actors" : {
"Indiana Jones": "Harrison Ford",
"Mola Ram": "Amish Puri"
},
"producers": ["Robert Watts"],
"budget" : 28170000,
"academy_award_ve": true
},
{
"name" : "Indiana Jones and the Last Crusade",
"year" : 1989,
"actors" : {
"Indiana Jones": "Harrison Ford",
"Walter Donovan": "Julian Glover"
},
"producers": ["Robert Watts", "George Lucas"],
"budget" : 48000000,
"academy_award_ve": false
}]}文件名为"indy.json“
下面是一个可重复使用的示例:
indy <- fromJSON(content = "indy.json")然而,我得到的结果是:
> indy <- fromJSON(content = "indy.json")
Error in nchar(content) : invalid multibyte string, element 1下面是我的相关sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12.4有没有人能建议一下为什么会发生这种情况?
发布于 2018-04-12 22:29:14
请尝试使用jsonlite包。我将您的字符串粘贴到一个文件中,将其另存为t.R,然后再将其读入。上面的字符串表示为您的字符串。
> library(jsonlite)
> library(readr)
> x <- read_file("t.R")
> x
[1] "{\"indy movies\" :[\r\n {\r\n \"name\" : \"Raiders of the Lost Ark\",\r\n \"year\" : 1981,\r\n \"actors\" : {\r\n \"Indiana Jones\": \"Harrison Ford\", \r\n \"Dr. René Belloq\": \"Paul Freeman\" \r\n },\r\n \"producers\": [\"Frank Marshall\", \"George Lucas\", \"Howard Kazanjian\"],\r\n \"budget\" : 18000000,\r\n \"academy_award_ve\": true\r\n },\r\n {\r\n \"name\" : \"Indiana Jones and the Temple of Doom\",\r\n \"year\" : 1984,\r\n \"actors\" : {\r\n \"Indiana Jones\": \"Harrison Ford\", \r\n \"Mola Ram\": \"Amish Puri\"\r\n },\r\n \"producers\": [\"Robert Watts\"],\r\n \"budget\" : 28170000,\r\n \"academy_award_ve\": true\r\n },\r\n {\r\n \"name\" : \"Indiana Jones and the Last Crusade\",\r\n \"year\" : 1989,\r\n \"actors\" : {\r\n \"Indiana Jones\": \"Harrison Ford\", \r\n \"Walter Donovan\": \"Julian Glover\"\r\n },\r\n \"producers\": [\"Robert Watts\", \"George Lucas\"],\r\n \"budget\" : 48000000,\r\n \"academy_award_ve\": false\r\n }]}"
> jsonlite::fromJSON(x)
$`indy movies`
name year actors.Indiana Jones actors.Dr. René Belloq actors.Mola Ram
1 Raiders of the Lost Ark 1981 Harrison Ford Paul Freeman <NA>
2 Indiana Jones and the Temple of Doom 1984 Harrison Ford <NA> Amish Puri
3 Indiana Jones and the Last Crusade 1989 Harrison Ford <NA> <NA>
actors.Walter Donovan producers budget academy_award_ve
1 <NA> Frank Marshall, George Lucas, Howard Kazanjian 18000000 TRUE
2 <NA> Robert Watts 28170000 TRUE
3 Julian Glover Robert Watts, George Lucas 48000000 FALSE发布于 2018-06-25 11:31:44
在indy.json中有一些隐形字符删除它,这个问题将被解决。

https://stackoverflow.com/questions/46610261
复制相似问题