ruby on rails - 레일즈 - 루비 해시 객체를 JSON으로 변환하는 방법은 무엇입니까?




레일즈 yield (2)

루비 해시 객체를 JSON으로 변환하는 방법은 무엇입니까? 그래서 아래 예제를 시도하고 있으며 작동하지 않습니다?

RubyDoc을보고 있었고 분명히 Hash 객체에는 to_json 메서드가 없습니다. 그러나 나는 레일스가 active_record.to_json 을 지원하고 hash#to_json 지원한다는 블로그를 읽고있다. 나는 ActiveRecord 가 Rails 객체라는 것을 이해할 수있다. 그러나 Hash 는 Rails가 아니라 순수한 Ruby 객체이다. 그래서 레일즈에서는 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




hashmap