2013-08-23 52 views
1

我想解析ruby中的多個json對象。解析Ruby中的多個JSON請求

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

我可以看到我從ge​​tJSONData獲得obj是正確的,每次,但是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內存或從其他exmaples需要的方法。

我在做錯JSON.parse的問題? 請注意,我在導軌上使用紅寶石1.9.3 - 感謝, Niru

+0

JSON不記得傳入的數據,所以這個問題是在你的代碼。我們需要看到更多的代碼。向我們展示您傳入的'key'值的定義。同時向我們顯示'getJSONData'。我們不能用你給我們的小小來重複這個問題。 –

+0

不幸的是,我不能發佈代碼getJSONData。我唯一可以驗證的是每次調用該函數都會返回正確的json輸出。此外,函數實際上只有那3行代碼,並且函數中沒有引用全局/類變量。謝謝,我確實想確認JSON不記得傳入的數據。 – Niru

回答

1

在我的代碼中發現了錯誤。我不小心將數據保留爲@data,這是不正確的,因爲我已經做了一些重構。我的方法中,正確的代碼應該已經:

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

由於@data不應該是一個實例變量,不應該被宣佈的方式。

-Thanks, 尼汝