【Go言語】JSON操作の完全ガイド: GoでJSONをエンコード・デコードする方法
はじめに
JSONは、WebのAPIや設定ファイルをはじめにさまざまな場面で利用されています、この記事では、Go言語を用いてJSONをエンコード・デコードする基本的な方法から、実際のファイル操作までをわかりやすくガイドします。
3行で要約すると
- Go言語のosパッケージを使用して、JSONファイルの読み書きを実現する方法。
encoding/json
パッケージを使ったJSONのエンコードとデコード方法。- 実践的なコード例でJSONの操作をマスターしましょう。
Go言語でのJSON操作
Go言語はAPIやデータの交換の際に頻繁にJSON形式を扱うことがあります。この記事では、Go言語を使ってJSONを効果的に操作する方法を紹介します。
JSONエンコード
GoのstructをJSON文字列にエンコードする方法を見てみましょう。
package main
import (
"encoding/json"
"fmt"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
// Person型のインスタンスを作成
p := Person{Name: "Taro", Age: 25, Email: "[email protected]"}
// JSONエンコード
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
// エンコード結果の表示
fmt.Println(string(jsonData))
}
このコードは、Person
というstructをJSON文字列にエンコードして表示します。実行結果は以下のようになります。
{"name":"Taro","age":25,"email":"[email protected]"}
JSONデコード
次に、JSON文字列をGoのstructにデコードする方法を紹介します。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
// デコードするJSONデータ
jsonStr := `{"name":"Taro","age":25,"email":"[email protected]"}`
var p Person
// JSONデコード
if err := json.Unmarshal([]byte(jsonStr), &p); err != nil {
fmt.Println(err)
return
}
// デコード結果の表示
fmt.Println(p)
}
実行すると、以下のような結果が表示されます。
{Name:Taro Age:25 Email:taro@example.com}
JSONファイルの読み書き
osパッケージを使用して、JSONファイルの読み書きを行います。
ファイルの書き込み
package main
import (
"encoding/json"
"fmt"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
p := Person{Name: "Taro", Age: 25, Email: "[email protected]"}
// ファイルを作成
file, err := os.Create("person.json")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
// JSONエンコードしてファイルに書き込み
encoder := json.NewEncoder(file)
if err := encoder.Encode(p); err != nil {
fmt.Println(err)
}
}
このコードは、Person
structをperson.json
というファイルに書き込む例です。
ファイルの読み込み
package main
import (
"encoding/json"
"fmt"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
// ファイルを開く
file, err := os.Open("person.json")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
var p Person
// ファイルからJSONデータをデコード
decoder := json.NewDecoder(file)
if err := decoder.Decode(&p); err != nil {
fmt.Println(err)
return
}
// 読み込んだデータの表示
fmt.Println(p)
}
このコードは、先ほど書き込んだperson.json
を読み込み、デコードして表示する例です。
まとめ
Go言語を使ったJSONの操作は非常にシンプルで効果的です。日常的な開発業務で頻繁に使用する知識なので、しっかりとマスターしておきましょう。