Чтение файла JSON из R - PullRequest
       5

Чтение файла JSON из R

4 голосов
/ 06 августа 2010

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

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

Ответы [ 3 ]

6 голосов
/ 06 августа 2010

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

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

Ошибка в fromJSON ("{\" arr \ ": []}"): неожиданный символ::

2 голосов
/ 06 августа 2010

Вы можете попробовать функцию fromJSON в пакете RJSONIO , размещенном по адресу http://www.omegahat.org. Кажется, что файл читается нормально.

0 голосов
/ 26 марта 2015

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

Создайте новую функцию, чтобы заменить существующую функцию 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\\\""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...