2010-08-06 3 views
4

Я пробую прочитать файл JSON с R, используя rjson, но продолжайте получать ошибки. Я проверил файл JSON с помощью различных онлайн-валидаторов. Вот содержимое файла JSON:Чтение файла JSON из R

{ 
    "scenarios": [ 
     { 
     "files": { 
      "type1": "/home/blah/Desktop/temp/scen_0.type1", 
      "type2": "/home/blah/Desktop/temp/scen_0.type2" 
     }, 
     "ID": "scen_0", 
     "arr": [], 
     "TypeToElementStatsFilename": { 
      "type1": "/home/blah/Desktop/temp/scen_0.type1.elements", 
      "type2": "/home/blah/Desktop/temp/scen_0.type2.elements" 
     } 
     } 
    ], 
    "randomSeed": "39327314969888", 
    "zone": { 
     "length": 1000000, 
     "start": 1 
    }, 
    "instanceFilename": "/home/blah/bloo/data/XY112.zip", 
    "txtFilename": "/home/blah/bloo/data/XY112.txt", 
    "nSimulations": 2, 
    "TypeTodbFilename": { 
     "type1": "/home/blah/bloo/data/map.type1.oneAmb.XY112.out" 
    }, 
    "arr": { 
     "seg11": { 
     "length": 1000, 
     "start": 147000 
     }, 
     "seg12": { 
     "length": 1000, 
     "start": 153000 
     }, 
     "seg5": { 
     "length": 1000, 
     "start": 145000 
     }, 
     "seg6": { 
     "length": 1000, 
     "start": 146000 
     }, 
     "seg1": { 
     "length": 100, 
     "start": 20000 
     } 
    }, 
    "outPath": "/home/blah/Desktop/temp", 
    "instanceID": "XY112", 
    "arrIds": [ 
     "seg5", 
     "seg6", 
     "seg1", 
     "seg11", 
     "seg12" 
    ], 
    "truth": { 
     "files": { 
     "type1": "/home/blah/Desktop/temp/truth.type1", 
     "type2": "/home/blah/Desktop/temp/truth.type2" 
     }, 
     "ID": "truth", 
     "TypeToElementStatsFilename": { 
     "type1": "/home/blah/Desktop/temp/truth.type1.elements", 
     "type2": "/home/blah/Desktop/temp/truth.type2.elements" 
     } 
    } 
} 

И ошибка:

> json_file <- "~/json" 
> json_data <- fromJSON(paste(readLines(json_file), collapse="")) 
Error in fromJSON(paste(readLines(json_file), collapse = "")) : 
    unexpected character: : 
+0

Это поможет, если вы сообщите нам, что версия * rjson *. Является ли это еще открытым вопросом с 2013 года? – smci

ответ

6

RJSON волнуется о пустых массивов.

fromJSON('{ "arr": [ ] }')

Ошибка в fromJSON ("{\" обр \ ": []}"): неожиданный характер::

+0

+1 спасибо. по-видимому, он терпит неудачу не только на пустые массивы, но и на пустые объекты. Я отправлю электронное письмо сопровождающему, так как я думаю, что они действительны в JSON. –

0

Есть исправление для этого.

Создайте новую функцию для замены существующей функции getURL, используемой в RCurl, и вы должны иметь свое решение.

myGetURL <- function(...) { 
    rcurlEnv <- getNamespace("RCurl") 
    mapUnicodeEscapes <- get("mapUnicodeEscapes", rcurlEnv) 
    unlockBinding("mapUnicodeEscapes", rcurlEnv) 
    assign("mapUnicodeEscapes", function(str) str, rcurlEnv) 
    on.exit({ 
     assign("mapUnicodeEscapes", mapUnicodeEscapes, rcurlEnv) 
     lockBinding("mapUnicodeEscapes", rcurlEnv) 
    }, add = TRUE) 
    return(getURL(...)) 
} 

Тест:

> json <- myGetURL("http://abicky.net/hatena/rcurl/a.json") 
> cat(json, fill = TRUE) 
{"a":"\\\"\u0030\\\""} 
> fromJSON(json) 
$a 
[1] "\\\"0\\\"" 
Смежные вопросы