Rails 6中如何提取HTTParty返回哈希内metadata字段的name值
实现步骤
你拿到的返回数据中,metadata字段是序列化后的JSON字符串,需要先解析为Ruby哈希再提取字段,具体实现如下:
单条提取(匹配你给出的返回示例)
# 纯Ruby环境需先引入JSON库,Rails项目可省略 require 'json' # 逐层取值并解析 metadata = JSON.parse(@response[:result][0][:metadata]) target_name = metadata['name'] puts target_name # 输出结果:Club Legends #44 | Henrik - Celtic
注意:如果HTTParty返回的哈希使用字符串作为键,把上述代码中的
:result、:metadata替换为"result"、"metadata"即可。
批量提取(适配result有多条数据的场景)
require 'json' # 遍历result提取所有metadata中的name值 name_list = @response[:result].map do |item| JSON.parse(item[:metadata])['name'] end
安全容错写法
避免某层级字段为空时报错:
require 'json' target_name = @response.dig(:result, 0, :metadata) &.then { |str| JSON.parse(str)['name'] }
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

