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のフィールド名を制御するために使用できます。

bannerAds