Reading JSON file from R

I am trying to read a JSON file from R using rjson , but keep getting errors. I checked the JSON file using various online validators. Here is the contents of the JSON file:

{ "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" } } } 

And the error:

 > json_file <- "~/json" > json_data <- fromJSON(paste(readLines(json_file), collapse="")) Error in fromJSON(paste(readLines(json_file), collapse = "")) : unexpected character: : 
+4
source share
3 answers

RJSON obfuscates empty arrays.

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

InJSON error ("{\" arr \ ": []}"): unexpected character ::

+6
source

You can try the fromJSON function in the RJSONIO package located at http://www.omegahat.org . It seems to read the file perfectly.

+2
source

There is a fix.

Create a new function to replace the existing getURL function used in RCurl, and you should have your solution.

 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(...)) } 

Test:

 > json <- myGetURL("http://abicky.net/hatena/rcurl/a.json") > cat(json, fill = TRUE) {"a":"\\\"\u0030\\\""} > fromJSON(json) $a [1] "\\\"0\\\"" 
0
source

All Articles