【Go言語】JSON・YAMLとは?詳しい使い方と解説について
Go言語は、ほかの言語と比較しても
記述がとてもシンプルで、
様々なプロジェクトで扱われています。
また記述のみならず、データのやり取りや設定を行なう際に
使用するファイル形式もJSON、YAMLといった
わかりやすいファイル形式を取り扱っています。
「でも、いくらシンプルだからと言ってもJSONとかYAMLとか知らない…」
という人のために、今回は
JSONとYAMLの2つだけに焦点を当てて解説していきます。
- JSON形式とは何か?
- YAML形式とは何か?
- 2つの形式の書き方、使い方について
そこまで難しい内容でもないので、5分ぐらいの合間で見ていただけたらと思います!
では早速、行きましょう!
JSON形式とは?
JSON(JavaScript Object Notation)とは、軽量で可読性の高いデータ交換形式です。
特にWebアプリケーションのフロントエンドとバックエンド間でのデータ通信において、よく使われていますね~
JSONは、キーと値のペアでデータを構造化する書き方になります。
1{
2 "name": "Alice",
3 "age": 30,
4 "email": "alice@example.com"
5}
jsonが何のことだか分からない人でも、なんとなく分かるような
シンプルなところがJSONのいい所ですね〜
また、Goでは標準ライブラリの「encoding/json」というパッケージを使って、
簡単にJSONデータを操作できます。
GoでのJSON操作例
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "log"
7)
8
9type User struct {
10 Name string `json:"name"`
11 Age int `json:"age"`
12 Email string `json:"email"`
13}
14
15func main() {
16 user := User{"Alice", 30, "alice@example.com"}
17
18 // 構造体をJSONに変換
19 jsonData, err := json.Marshal(user)
20 if err != nil {
21 log.Fatal(err)
22 }
23 fmt.Println(string(jsonData))
24
25 // JSONを構造体に変換
26 var newUser User
27 err = json.Unmarshal(jsonData, &newUser)
28 if err != nil {
29 log.Fatal(err)
30 }
31 fmt.Printf("%+v\n", newUser)
32}
33
このように、Go言語では
- JSONからGoの構造体へ
- Goの構造体からJSONへ
と簡単に変換して扱うことができます。
Go言語との相性がいいこともあって、API開発ではデータのやり取りに頻繁に使われている形式です!
YAML形式とは?
次にyaml形式についてです
YAML(YAML Ain’t Markup Language)は
JSONと同様にキーと値のペアでデータを構造化しますが、
インデントによって階層構造を表現する点が特徴です。
これにより、設定ファイルとして使われることが多いです。
文字列の先頭に空白を挿入することを指します。YAMLでは、インデントが無いと構文エラーとなります。
1user:
2 name: 田中太郎
3 age: 30
4 email: tanaka@example.com
上記のように、インデントを駆使して
userという構造体に対して
- name:田中太郎
- age:30
- email:tanaka@example.com
といった3つのデータを保持していることを表現できます!
GoでのYAML操作例
YAMLをGo言語で扱うには、「gopkg.in/yaml.v2」といった外部ライブラリを利用します。
こちらのデータ形式も同様に、Go言語で操作してみます!
1package main
2
3import (
4 "fmt"
5 "log"
6
7 "gopkg.in/yaml.v2"
8)
9
10type User struct {
11 Name string `yaml:"name"`
12 Age int `yaml:"age"`
13 Email string `yaml:"email"`
14}
15
16func main() {
17 user := User{"Alice", 30, "alice@example.com"}
18
19 // 構造体をYAMLに変換
20 yamlData, err := yaml.Marshal(user)
21 if err != nil {
22 log.Fatal(err)
23 }
24 fmt.Println(string(yamlData))
25
26 // YAMLを構造体に変換
27 var newUser User
28 err = yaml.Unmarshal(yamlData, &newUser)
29 if err != nil {
30 log.Fatal(err)
31 }
32 fmt.Printf("%+v\n", newUser)
33}
34
こちらもJSONと同様に、
- YAMLからGoの構造体へ
- Goの構造体からYAMLへ
といったように、容易に変換することができます。
YAMLは、JSONのようにデータのやり取りよりも
Go言語の様々な設定ファイルとして、しばしば活躍していますね~
まとめ
ということで、jsonとyaml形式のデータについて紹介しました!
Go言語でデータ形式を扱う際には、JSONとYAMLの2つ形式がほとんどですね。
とりあえず、今回の記事では
- JSONはデータのやり取りに
- YAMLは設定ファイルに
というイメージを持っていただけたらOKです!
この記事が、Go言語習得の糧になって下されば幸いです!
ということで、今回はこのあたりで!
ありがとうございました!