漂亮的,擦过的JSON密钥

时间:2014-08-07 22:27:29

标签: ruby-on-rails ruby json hash

获得漂亮的Rubified哈希键的最佳方法是什么?

IE中。 someKey变为some_key

  1. Hashie::Trash - 如果没有先定义每个键,也就是不可能。 property :some_key, from: :someKey - 不是很漂亮。

  2. https://github.com/tcocca/rash - 遗憾的是breaks Hashie::Extensions::DeepFetch我打算稍后使用。

  3. Rails ActiveSupport's underscore - 不清楚如何将其应用于我的用例。

  4. 现场演示应用:http://runnable.com/U-QJCIFvY2RGWL9B/pretty-json-keys

    class MainController < ApplicationController
      def index
        @json_text = <<END
          ...
        END
    
        response = JSON.parse(@json_text)['products']
    
        @products = []
        response.each do |product|
          @products << product['salePrice']
    
          # Seeking the best way to make this say:
    
          # @products << product['sale_price']
        end
      end
    end
    

1 个答案:

答案 0 :(得分:1)

好吧,你总是可以翻译成新的哈希:

def self.prettify(x)
  x.is_a?(Hash) ? Hash[ x.map{|k,v| [k.underscore, prettify(v)]} ] :
  x.is_a?(Array) ? x.map{|v| prettify(v) } : x
end

pretty_json_hash = prettify(JSON.parse(@json_text))

注意:如果你不能在这个级别编写代码,那么很难获得Rails的成功。