2013-08-23 2 views
1

Я пытаюсь разобрать несколько объектов json в ruby.Анализ нескольких запросов JSON в Ruby

def processKey(key) 
    obj = getJSONData(key) 
    puts "got log: " + obj.to_s + "\n" 
    @data = JSON.parse(obj) 
end 

Я могу видеть, что OBJ, что я получаю от getJSONData правильно каждый раз, однако JSON.parse продолжает возвращает первый объект его разобранную

Например:

for key1 -> getJSONData(key1) returns obj1 -> JSON.parse(obj1) returns hash1 
for key2 -> getJSONData(key2) returns obj2 -> JSON.parse(obj2) returns hash1 
for key3 -> getJSONData(key3) returns obj3 -> JSON.parse(obj3) returns hash1 

Почему ? Оглядываясь на http://www.ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/JSON.html и примеры stackoverflow, я не замечаю способ очистки памяти JSON или необходимости использования других примеров.

Что я делаю неправильно в отношении JSON.parse? Как примечание, я использую рубин на рельсах 1.9.3 -Спасибо, Ниру

+0

JSON не помнит данные, передаваемые в, так что проблема в вашем коде. Нам нужно увидеть больше кода. Покажите нам определение для значений 'key', которые вы передаете. Также покажите нам' getJSONData'. Мы не можем дублировать проблему с тем, что вы нам дали. –

+0

К сожалению, я не могу опубликовать код getJSONData. Единственное, что я могу проверить, это то, что каждый вызов функции возвращает правильный вывод json. Также функция действительно только те 3 строки кода, и нет никаких переменных global/class, на которые ссылается функция. Спасибо, я действительно хотел подтвердить, что JSON не помнит данные, переданные в. – Niru

ответ

1

Нашли ошибку в моем коде. Я случайно оставил данные как @data, что было неверно, так как я сделал некоторые рефакторинг. Правильный код в мой метод должен был быть:

def processKey(key) 
    obj = getJSONData(key) 
    data = JSON.parse(obj) 
    return data 
end 

Поскольку @data не должна быть переменная экземпляра и не должны быть объявлены так.

-Спасибо, Ниру

Смежные вопросы