go

【Go言語】JSON・YAMLとは?詳しい使い方と解説について

たけのこ

Go言語は、ほかの言語と比較しても

記述がとてもシンプルで、

様々なプロジェクトで扱われています。

また記述のみならず、データのやり取りや設定を行なう際に

使用するファイル形式もJSONYAMLといった

わかりやすいファイル形式を取り扱っています。

でも、いくらシンプルだからと言っても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言語習得の糧になって下されば幸いです!

ということで、今回はこのあたりで!

ありがとうございました!

スポンサーリンク
ABOUT ME
たけのこ
たけのこ
自由奔放エンジニア
現役でエンジニアをやっています! 開発現場で経験したコーディング実装例、実装アーキテクチャの解説などを記事に書き起こしています!
記事URLをコピーしました