web-dev-qa-db-ja.com

RubyハッシュオブジェクトをJSONに変換する方法

RubyハッシュオブジェクトをJSONに変換する方法だから私は以下のこの例を試している&それはうまくいきませんか?

私はRubyDocを見ていました、そして明らかにHashオブジェクトはto_jsonメソッドを持っていません。しかし私は、Railsがactive_record.to_jsonをサポートし、またhash#to_jsonもサポートしていることをブログで読んでいます。 ActiveRecordはRailsオブジェクトですが、HashはRails固有のものではなく、純粋なRubyオブジェクトです。 Railsではhash.to_jsonを実行できますが、純粋なRubyではできません。

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

Rubyの優れた点の1つは、既存のクラスを独自のメソッドで拡張できることです。これは「クラスの再開」またはサルのパッチ適用と呼ばれます(後者の意味 はさまざまです 。)。

だから、ここで見てみましょう:

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を要求すると、Hashto_jsonというメソッドが魔法のようにもたらされました。

521
require 'json/ext' # to use the C based extension instead of json/pure

puts {hash: 123}.to_json
16
nurettin

JSON.generateを使うこともできます。

require 'json'

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

あるいはその別名、JSON.unparse

require 'json'

JSON.unparse({ foo: "bar" })
=> "{\"foo\":\"bar\"}"
0
vnbrs

あなたのファイルにjsonを含めるべきです

例えば、

require 'json'

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

jsonの詳細については、以下のリンクを参照してください。 Json Learning

0
Foram Thakral