Ruby 使用变量时无法从JSON中选择字段

Ruby 使用变量时无法从JSON中选择字段,ruby,Ruby,我试图解析JSON,从api响应我的请求,但当我试图使用变量函数从中选择一个字段时,会返回变量值 @json = JSON.parse(request("smth")) 并且在同一类中(@json在initialize函数中) 当im使用smth=Class.new时 和下一个smth.custom(['name']) 函数返回我。。。name而不是name value方法args。每个迭代数组中的每个项,然后返回数组。这意味着: args.each do |arg| @json[arg]

我试图解析JSON,从api响应我的请求,但当我试图使用变量函数从中选择一个字段时,会返回变量值

@json = JSON.parse(request("smth"))
并且在同一类中(@json在initialize函数中)

当im使用smth=Class.new时 和下一个smth.custom(['name'])
函数返回我。。。name而不是name value方法
args。每个
迭代数组中的每个项,然后返回数组。这意味着:

args.each do |arg|
  @json[arg]
end
遍历
args
中的每个项目,然后返回
args
。中间的部分,<代码> @ JSON[ARG] 实际上没有做任何事情,因为这些值没有返回。

如果要检索这些值,需要将它们添加到新数组并返回:

def custom args
  values = []
  args.each do |arg|
    values << @json[arg]
  end
  values
end
如果希望
custom
方法返回包含指定名称对的
name:value
哈希,则可以使用
select

def custom args
  @json.select { |k, v| args.include? k }
end

这将遍历
@json
散列中的每个项,并返回一个新的散列,其中只包含方法
args中列出的键。每个
迭代数组中的每个项,然后返回数组。这意味着:

args.each do |arg|
  @json[arg]
end
遍历
args
中的每个项目,然后返回
args
。中间的部分,<代码> @ JSON[ARG] 实际上没有做任何事情,因为这些值没有返回。

如果要检索这些值,需要将它们添加到新数组并返回:

def custom args
  values = []
  args.each do |arg|
    values << @json[arg]
  end
  values
end
如果希望
custom
方法返回包含指定名称对的
name:value
哈希,则可以使用
select

def custom args
  @json.select { |k, v| args.include? k }
end

这将遍历
@json
散列中的每个项目,并返回一个新的散列,其中只包含
args

中列出的键。您基于值的版本可以是
args.map{| arg |@json[arg]}
这将创建一个新数组并返回it@engineersmnky非常感谢。我使用
每个
保存代码,因为我认为在可能的情况下,向OP展示如何使自己的代码工作很重要。但是我会继续添加您的
map
代码,因为它肯定是更优雅的解决方案。您基于值的版本可以是
args.map{| arg |@json[arg]}
这将创建一个新数组并返回it@engineersmnky非常感谢。我使用
每个
保存代码,因为我认为在可能的情况下,向OP展示如何使自己的代码工作很重要。但我会继续添加您的
映射
代码,因为它肯定是更优雅的解决方案。