Go 言語の構造体をシリアライズするにはどうすればいいですか?
Goではencoding/jsonパッケージを使用して構造体のシリアライズとデシリアライズができます。
まず、encoding/jsonパッケージをインポートする必要があります。
import "encoding/json"
そして、構造体型の定義を行います。例えば:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
この例では、Personという構造体を定義していて、これはNameとAgeという2つのフィールドを持っています。フィールドの後ろにjson:”name”とjson:”age”のタグを追加することで、JSONシリアライズおよびデシリアライズ時に使用されるフィールド名を指定できます。
次に、Person 型の変数を作り、それに値(値)を格納することができます。
person := Person{
Name: "Alice",
Age: 25,
}
現在は、JSON文字列に構造体をシリアル化する json.Marshal 関数が利用できます。
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("JSON serialization failed:", err)
return
}
JSONデータを文字列に変換して表示することができる。
fmt.Println(string(jsonData))
これで構造体のシリアライズが完了します。
Person構造体のフィールドを含むJSON文字列が出力されます。例:
{"name":"Alice","age":25}
構造体のデシリアライズを行うには、`json.Unmarshal` 関数を利用することができます。例えば、先の JSON 文字列を `Person` 構造体に戻すことができます。
var restoredPerson Person
err = json.Unmarshal(jsonData, &restoredPerson)
if err != nil {
fmt.Println("JSON deserialization failed:", err)
return
}
現在、restoredPerson 変数は、以前にシリアライズされた Person 構造体のフィールド値を含みます。
構造体のシリアライズとデシリアライズの基本的な方法はGoでこれです。シリアライズとデシリアライズの際の構造体のフィールドは、jsonパッケージがアクセスできるように公開(大文字から始まる)必要があります。構文のフィールドラベルは、JSONのフィールド名を制御するために使用できます。