我试图解析JSON什么是我要求的api响应,但是当我尝试使用变量函数从中选择一个字段时返回变量值。
@json = JSON.parse(request("smth"))
并且在同一个类中(@json在初始化函数中)
def custom args
args.each do |arg|
@json[arg]
end
end
当我使用smth = Class.new时 和下一个smth.custom(['name']) 函数返回我...名称而不是名称值
答案 0 :(得分:3)
方法args.each
遍历数组中的每个项目,然后返回数组。这意味着:
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
在Ruby中,更简单的方法是使用map
,它根据另一个数组项创建一个数组:
def custom args
args.map { |arg| @json[arg] }
end
如果您希望custom
方法返回包含您指定的name: value
对名称的哈希值,则可以使用select
:
def custom args
@json.select { |k, v| args.include? k }
end
这会遍历@json
哈希中的每个项目,并返回一个新哈希,其中只包含args
中列出的密钥。