8.1 JSONファイルを扱う

JSONとはJavaScript Object Notationの略で、テキスト形式のデータフォーマットです。フロントエンドとバックエンドのデータのやり取り、SaaSサービスが提供するAPIのレスポンス、CLIの設定ファイルなど多くの場所で用いられています。ほとんどのプログラミング言語で標準ライブラリに組み込まれており、Goでも encoding/json パッケージを用いて操作できます 1 。まずは基本的な操作方法から見ていきましょう。

1

JSONに関するRFCは RFC 7159 や RFC 8259 があります。Goの encoding/json パッケージは RFC 7159 で定められている仕様がベースになっています。

8.1.1 基本的なエンコードとデコード

エンコードとは一般に、データをある規則に基づいて別の形式に変換することを指します。逆に変換された形式のデータを元に戻すことをデコードと言います。Goの値をバイト列への変換することはエンコード、逆にバイト列からGoの値に変換することはデコードとなります 2

2

Javaの文化だと、Javaのオブジェクトからバイト列に変換して出力することをシリアライズと呼び、シリアライズされた入力をJavaオブジェクトに復元することをデシリアライズと呼びます。言語の文化圏によって微妙な言い回しの違いはありますが、意味は似たようなものです。

8.1.1.1 デコード

APIにリクエストしたレスポンスがJSONになっており、レスポンスをGoのアプリケーションで扱いたい場合は多いでしょう。例として、以下のJSONをGoの値にデコードしましょう。

リスト8-1: ip.json ...