目的
Railsで外部APIと通信した際に、APIから返ってきた値をJSONからHashに変換したり、逆に送る値をHashからJSONに変換する処理を行ったのでまとめる。
前提
ruby 2.7
RailsのHash
Rubyでキーと値を組み合わせでデータを管理するオブジェクト。他の言語では連想配列とも
形式
- 文字列を囲むのは
''
でも""
でもどちらでもいい。
文字列で囲まれていないものはシンボル
囲まれているものでもシンボルのものがある。
{ 'id' => 1, 'name' => 'user1', 'age' => 22}
# キーがシンボル
{ "id": 1, "name": "user1", "age": 22}
{ id: 1, name: "user1", age: 22 }
{ :id => 1, :name => "user1", :age => 22}
JSON
- 「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトのオブジェクトの書き方を元にしたデータ定義方法」のこと
- JavaScriptなどのクライアント言語とRailsなどのサーバサイド言語間のデータのやり取りで使用される。
形式
{ "id": 1, "name": "user1", "age": 22}
相互変換
Hash -> JSON
to_jsonメソッドを使う
例)
pra.rb
require 'json'
data = { 'id' => 1, 'name' => 'user1', 'age' => 22}
puts data.to_json
p data.to_json
結果
$ ruby pra.rb
{"id":1,"name":"user1","age":22}
"{\"id'\":1,\"name\":\"user1\",\"age\":22}"
JSON -> Hash
JSON.parse()を使う
例)
pra2.rb
require 'json'
data = '{
"id": 1,
"name": "user1",
"age": 22
}'
puts JSON.parse(data)
p JSON.parse(data)
結果
$ ruby pra2.rb
{"id"=>1, "name"=>"user1", "age"=>22}
{"id"=>1, "name"=>"user1", "age"=>22}