Обработка нескольких объектов JSON в одном файле - PullRequest
3 голосов
/ 27 августа 2010

Я сделал что-то глупое ... Я собрал большую тонну данных JSON и сохранил их в одном файле. Я теперь получаю ошибки, когда я пытаюсь JSON.parse (файл) из-за того, что его объект JSON после объекта JSON Кто-нибудь может посоветовать, как мне разобрать эти данные? Структура выглядит следующим образом. Следующая запись - это объект с точно такой же структурой.

{"purchase": 
  { 
   "amount": 34.595399, 
   "uid": 1282907706, 
   "user": 
          {
                 "id": xxxx
                 "name": "xxxx"
          }, 
    "dailycount": 135.82373100000001, 
    "productdetails": 
     {
          "type": "shoes"
     }, 
    "details": 
    {
          "gender": "male"
   }, 
   "createdin": "Asia/Tokyo", 
   "id": 147707740, 
   "comments": []}} 

Ответы [ 2 ]

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

Конечно, проблема в том, что у вас нет действительного объекта json.

irb(main):004:0> JSON.parse("{'foo':'bar'},{'foo':'baz'}")
JSON::ParserError: 705: unexpected token at '{'foo':'bar'},{'foo':'baz'}'
    from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse'
    from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse'
    from (irb):4

Итак, я бы добавил «ключ»: ['и'] 'до конца вашей последней фигурной скобки. чтобы сделать его действительным JSON.

irb(main):018:0> json = '{"key" : [{"foo":"bar"}, {"foo":"baz"}]}'
=> "{\"key\" : [{\"foo\":\"bar\"}, {\"foo\":\"baz\"}]}"
irb(main):019:0> JSON.parse json
=> {"key"=>[{"foo"=>"bar"}, {"foo"=>"baz"}]}
3 голосов
/ 27 августа 2010

Не могли бы вы использовать Поиск и замена в вашем текстовом редакторе? Я имею в виду, если у вас есть кусок кода, подобный этому:

{
   "a" : "b",
   "c" : "d"
}
{
   "a" : "e",
   "c" : "f",
}

Вы можете включить его, выполнив поиск последовательности }\s*{ и заменив последовательность }, { на что-то вроде этого:

[
{
   "a" : "b",
   "c" : "d"
},
{
   "a" : "e",
   "c" : "f",
}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...