2015-11-27 2 views
1

Допустим, что у меня есть следующий JSon файл:Получение данных из JSON файла в R

{ 
    "id": "000018ac-04ef-4270-81e6-9e3cb8274d31", 
    "currentCompany": "", 
    "currentTitle": "--", 
    "currentPosition": "" 
} 

Я использую следующий код:

Usersfile <- ('trial.json') #where trial the json above 
library('rjson') 
c <- file(Usersfile,'r') 
l <- readLines(c,-71L) 
json <- lapply(X=l,fromJSON) 

и у меня есть следующее сообщение об ошибке:

Error: parse error: premature EOF 
            { 
       (right here) ------^ 

Но когда я вхожу в json-файл (с помощью блокнота) и помещаю данные в одну строку:

{"id": "000018ac-04ef-4270-81e6-9e3cb8274d31","currentCompany": "","currentTitle": "--","currentPosition": ""} 

Код работает нормально. (На самом деле файл действительно большой, чтобы сделать это вручную для каждой строки). Почему это происходит? Как я могу это преодолеть?

Кроме того, это один не работает:

{ "id": "000018ac-04ef-4270-81e6-9e3cb8274d31","currentCompany": "","currentTitle": "--","currentPosition": "" 
} 

EDIT: Я использовал следующий код, который я мог читать только первое значение:

library('rjson') 
c <- file.path(Usersfile) 
data <- fromJSON(file=c) 

ответ

6

Удивление это никогда не ответили! Используя пакет jsonlite, вы можете свернуть данные json в один элемент символа, используя paste(x, collapse=""), удаляя маркеры EOF для правильного импорта в фреймворк данных R. Я тоже столкнулся с довольно печатным json с точной погрешностью:

library(jsonlite) 

json <- do.call(rbind, 
       lapply(paste(readLines(Usersfile, warn=FALSE), 
          collapse=""), 
         jsonlite::fromJSON))