@xSenelegx

Unexpected token at '' при использовании JSON в ruby?

Ruby 2.0
json (1.8.1, 1.7.7)

Функция, которая добавляет в файл json объект:
def add(input_hash)
    f = File.open('db.dat','a+')
    f.write(JSON.generate(input_hash))
    f.close
end


Функция, которая читает json объект из файла:
def get
    f = File.open('db.dat','a+')
    tmp = JSON.parse(f.read)
    return tmp
end

Если в файл вставить одно значение, любой json-объект, то считывание единственного объекта происходит без проблем.
Если в этот же файл вставить еще один json-объект, то, собственно, возникает ошибка при разборе второго значения - 'Unexpected token at <2jsonobject>'

/var/lib/gems/2.0.0/gems/json-1.8.1/lib/json/common.rb:178:in `parse': 757: unexpected token at '{"mail":{"google":"password"}}' (JSON::ParserError)


1. Пробовал читать и записывать строки с методом strip
2. Пробовал помещать в массив объекты, типа -
>> JSON.parse([ 'foo' ].to_json).first
=> "foo"

и
>> json = 'foo'.to_json
>> JSON.parse(json, :quirks_mode => true)
=> "foo"


Подскажите, что я неправильно делаю.
  • Вопрос задан
  • 3994 просмотра
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
Если друг за другом записать два json объекта получится невалидный json, смотрите содержимое файла.

f = File.open('db.dat','a+'); тут логичнее 'r' использовать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы