使用Ruby和Faraday转换传入的JSON密钥?

时间:2014-05-21 00:24:42

标签: ruby-on-rails ruby json faraday

我使用Faraday从Web服务中检索JSON编码对象,但是Web服务使用了可怕的密钥字符串作为密钥:值对,例如' Memo'我想要的地方'描述'和' projectManager'我想要的地方'经理'。

如何在Faraday检索密钥并将结果插入Ruby哈希值时对其进行转换?

我希望这是一个已解决的问题,但肯定很难找到。 (我看到很多帖子都询问在JSON.parse()中将符号转换为字符串。)

1 个答案:

答案 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