我使用Faraday从Web服务中检索JSON编码对象,但是Web服务使用了可怕的密钥字符串作为密钥:值对,例如' Memo'我想要的地方'描述'和' projectManager'我想要的地方'经理'。
如何在Faraday检索密钥并将结果插入Ruby哈希值时对其进行转换?
我希望这是一个已解决的问题,但肯定很难找到。 (我看到很多帖子都询问在JSON.parse()中将符号转换为字符串。)
答案 0 :(得分:1)
考虑将数据映射到Virtus对象
https://github.com/solnic/virtus
class Foo
include Virtus.model
attribute :manager, String
attribute :description, String
def self.map(json)
# you only need to map the ones that differ
new(json.merge!({
manager: json["projectManager"],
description: json["Memo"]
})
end
end
然后根据需要循环访问您的数据(或者如果有意义的话,创建一个顶级的virtus对象)
payload = ... # json retrieved by Faraday as array of ruby hashes
foo_list = payload.map do |item|
Foo.map(item)
end