【问题标题】:Parsing multiple JSON requests in Ruby在 Ruby 中解析多个 JSON 请求
【发布时间】:2013-08-27 00:03:54
【问题描述】:

我正在尝试在 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,我做错了什么? 作为说明,我在 rail 1.9.3 上使用 ruby -谢谢, 尼鲁

【问题讨论】:

  • JSON 不记得传入的数据,所以问题出在您的代码中。我们需要查看更多代码。向我们展示您传入的key 值的定义。同时向我们展示getJSONData。我们不能用你给我们的那一点点来重复这个问题。
  • 很遗憾,我无法发布代码 getJSONData。我唯一可以验证的是每次调用该函数都会返回正确的 json 输出。此外,该函数实际上只有那 3 行代码,并且函数中没有引用全局/类变量。谢谢,我确实想确认 JSON 不记得传入的数据。

标签: ruby-on-rails ruby json


【解决方案1】:

在我的代码中发现了错误。我不小心将数据保留为@data,这是不正确的,因为我做了一些重构。我的方法中的正确代码应该是:

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

因为@data 不应该是实例变量,也不应该这样声明。

-谢谢, 尼鲁

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 2018-10-27
    • 2019-05-03
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多