代码之家  ›  专栏  ›  技术社区  ›  kapso

如何将ruby散列对象转换为JSON?

  •  302
  • kapso  · 技术社区  · 16 年前

    如何将ruby散列对象转换为JSON?所以我尝试下面这个例子&不起作用?

    Hash 对象没有 to_json 方法。但我正在阅读Rails支持的博客 active_record.to_json 也支持 hash#to_json . 我能理解 ActiveRecord 是Rails对象,但是 它不是Rails的本机对象,而是一个纯Ruby对象。所以在Rails中你可以 hash.to_json

    car = {:make => "bmw", :year => "2003"}
    car.to_json
    
    3 回复  |  直到 10 年前
        1
  •  594
  •   Community Mohan Dere    9 年前

    Ruby的众多优点之一是可以用自己的方法扩展现有的类。这被称为“类重新开放”或猴子修补(后者的意思) can vary ,尽管如此)。

    car = {:make => "bmw", :year => "2003"}
    # => {:make=>"bmw", :year=>"2003"}
    car.to_json
    # NoMethodError: undefined method `to_json' for {:make=>"bmw", :year=>"2003"}:Hash
    #   from (irb):11
    #   from /usr/bin/irb:12:in `<main>'
    require 'json'
    # => true
    car.to_json
    # => "{"make":"bmw","year":"2003"}"
    

    如你所见,需要 json 神奇地带来了方法 to_json 给我们的 Hash .

        2
  •  19
  •   nurettin João    12 年前
    require 'json/ext' # to use the C based extension instead of json/pure
    
    puts {hash: 123}.to_json
    
        3
  •  8
  •   vinibrsl    7 年前

    你也可以使用 JSON.generate :

    require 'json'
    
    JSON.generate({ foo: "bar" })
    => "{\"foo\":\"bar\"}"
    

    或者它的别名, JSON.unparse :

    require 'json'
    
    JSON.unparse({ foo: "bar" })
    => "{\"foo\":\"bar\"}"
    
        4
  •  5
  •   Apurv Pandey    6 年前

    在文件顶部添加以下行

    require 'json'
    

    然后您可以使用:

    car = {:make => "bmw", :year => "2003"}
    car.to_json
    

    或者,您可以使用:

    JSON.generate({:make => "bmw", :year => "2003"})
    
        5
  •  -1
  •   Foram    7 年前

    你应该包括 json

    例如,

    require 'json'
    
    your_hash = {one: "1", two: "2"}
    your_hash.to_json
    

    更多关于 json文件 你可以访问下面的链接。 Json Learning