我正在传递输入字符串并在目标变量中获取{}但我希望得到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
请帮助!!!
答案 0 :(得分:1)
好的,所以JSON.parse()
需要第一个参数的字符串,一个完整的字符串。
当你执行argv[0]
时,你只是抓住字符串的第一个元素,这样它就无法工作了。
我相信在某些情况下,JSON.parse()
会在提供有效但不可用的字符串时返回空哈希值,在您的情况下,这只是一个字符,因此target
只是{}
。< / p>
所以,我认为要解决此问题,请将argv[0]
更改为argv
并仅提供有效的JSON字符串。
JSON.parse()
接受一个字符串而不是一个哈希值,特别是当argv[0]
指向一个键时由于初始输入哈希中没有0
的键,因此不存在的值对。