[ruby-on-rails] 루비 해시 객체를 JSON으로 변환하는 방법?

루비 해시 객체를 JSON으로 변환하는 방법? 그래서 아래 에서이 예제를 시도하고 있는데 작동하지 않습니까?

RubyDoc을보고 있었고 분명히 Hash객체에는 to_json메소드 가 없습니다 . 그러나 저는 Rails가 지원 active_record.to_json하고 지원하는 블로그를 읽고 있습니다 hash#to_json. ActiveRecordRails 객체 는 이해할 수 있지만 HashRails 고유의 것은 아니며 순수한 Ruby 객체입니다. 그래서 Rails hash.to_json에서는 순수 루비에서는 할 수 없습니다.

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



답변

Ruby의 많은 장점 중 하나는 기존 클래스를 자신의 메소드로 확장 할 수 있다는 것입니다. 이를 “클래스 다시 열기”또는 원숭이 패치 (후자의 의미 는 다를 수 있음 )라고합니다.

따라서 여기를 살펴보십시오.

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.


답변

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

puts {hash: 123}.to_json


답변

당신은 또한 사용할 수 있습니다 JSON.generate:

require 'json'

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

또는 별명 JSON.unparse:

require 'json'

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


답변

파일 맨 위에 다음 줄을 추가하십시오.

require 'json'

그런 다음 다음을 사용할 수 있습니다.

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

또는 다음을 사용할 수 있습니다.

JSON.generate({:make => "bmw", :year => "2003"})


답변

당신은 포함해야합니다 json파일에 합니다

예를 들어

require 'json'

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

자세한 내용 json은 아래 링크를 방문하십시오.
JSON 학습


답변