Ruby:为JSON生成输入

时间:2017-06-30 19:36:00

标签: json ruby

我正在传递输入字符串并在目标变量中获取{}但我希望得到ip和路径
下面是我的输入字符串:

target = {:state=>"running", :id=>"12", :ip=>"1.1.1.1"}.merge({:path => "path", :type => "target"})

以下是我的代码:

class A
    def initialize(argv)
       target = JSON.parse(argv[0] || '{}', :symbolize_names => true)
       @address = target[:ip] 
       @path = target[:path]
    end
end

请帮助!!!

1 个答案:

答案 0 :(得分:1)

好的,所以JSON.parse()需要第一个参数的字符串,一个完整的字符串。 当你执行argv[0]时,你只是抓住字符串的第一个元素,这样它就无法工作了。 我相信在某些情况下,JSON.parse()会在提供有效但不可用的字符串时返回空哈希值,在您的情况下,这只是一个字符,因此target只是{}。< / p>

所以,我认为要解决此问题,请将argv[0]更改为argv并仅提供有效的JSON字符串。

编辑:也只是注意到,我认为你传入一个哈希,再次无法工作,因为JSON.parse()接受一个字符串而不是一个哈希值,特别是当argv[0]指向一个键时由于初始输入哈希中没有0的键,因此不存在的值对。