0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Ruby] JSON相互変換

Last updated at Posted at 2023-08-29

目的

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}

参考にさせていただいた記事

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?