1

ruby で複数の json オブジェクトを解析しようとしています。

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

getJSONData から取得した 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 メモリをクリーンアップする方法や、他のメモリから削除する必要があることに気づきません。例。

JSON.parseに関して何が間違っていますか? 参考までに、私は ruby​​ on rail 1.9.3 を使用しています -Thanks, Niru

4

1 に答える 1

1

私のコードで間違いを見つけました。誤って @data としてデータを残してしまいました。これは、リファクタリングを行ったために正しくありませんでした。私のメソッド内の正しいコードは次のとおりです。

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

@data はインスタンス変数であってはならず、そのように宣言されるべきではありません。

-ありがとう、ニル

于 2013-08-23T22:53:24.603 に答える