ホームページ >バックエンド開発 >Golang >golang 構造体を JSON に変換

golang 構造体を JSON に変換

WBOY
WBOYオリジナル
2023-05-14 22:33:072281ブラウズ

Golang は非常に人気のあるプログラミング言語で、強力な同時実行パフォーマンスを備えているだけでなく、豊富な標準ライブラリと読みやすいコードも備えています。 Golang では struct が広く使われています。 Struct はデータをカプセル化するだけでなく、シリアル化と逆シリアル化も容易にします。この記事では、Golang の構造体を JSON 形式に変換する方法について説明します。

まず、JSON とは何かを理解しましょう。 JSON (JavaScript Object Notation の略) は、クライアントとサーバーの間でデータを転送するために一般的に使用される軽量のデータ交換形式です。 XML と比較して、JSON 形式はより簡潔で読みやすいです。

Golang では、構造体を JSON 形式に変換するのは非常に簡単です。このタスクは、組み込みの「encoding/json」パッケージを通じて実行できます。以下に、構造体を JSON 形式に変換する方法を示す簡単なコード例を示します。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    person := Person{Name: "Amy", Age: 30}
    personJSON, err := json.Marshal(person)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(personJSON))
}

この例では、person という名前の構造体型を定義し、person という名前のインスタンスを作成します。次に、 json.Marshal() 関数を使用して person インスタンスを JSON 形式に変換し、結果をコンソールに出力します。

パーソン構造体の定義に「json」タグを追加したことに注意してください。このタグは、構造体を JSON 形式に変換するときに使用されるキー名を表します。この例では、「name」と「age」は JSON キー名で、Name と Age は Golang の構造体フィールドの名前です。 struct フィールドに json タグを指定しない場合、JSON キー名はフィールド名と同じになります。

type Person struct {
    Name string
    Age  int
}

この例では、構造体のフィールド名と JSON キー名が同じであるため、自動的にマッピングされます。

json.Marshal() 関数を使用して構造体を JSON 形式に変換することに加えて、json.Unmarshal() 関数を使用して JSON 形式を構造体に変換することもできます。サンプル コードは次のとおりです。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    personJSON := `{"name":"Amy","age":30}`
    var person Person
    err := json.Unmarshal([]byte(personJSON), &person)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(person.Name, person.Age)
}

この例では、JSON 形式で表現された Person インスタンス データを含む personJSON という名前の文字列を定義します。次に、 json.Unmarshal() 関数を使用して personJSON 文字列を person 型に変換し、結果を person という名前の変数に保存します。最後に、人物インスタンスの名前と年齢を出力します。

json.Unmarshal() 関数の最初のパラメータは、構造体に変換される JSON データを表すバイト型のスライスであることに注意してください。 2 番目のパラメーターは、この型のインスタンスにデコードされる JSON データを表す Person 型へのポインターです。

結論として、Golang の構造体を JSON 形式に変換するのは非常に簡単な作業です。これは、組み込みの「encoding/json」パッケージを使用して行うことができます。 struct フィールドに「json」タグを追加することで、JSON キー名をカスタマイズできます。逆に、ラベルが指定されていない場合、JSON キー名はフィールド名と同じになります。 JSON 逆シリアル化を行うときは、関数が返されたときにその型の値が更新されるように、ターゲットの型をポインターとして渡すようにしてください。

以上がgolang 構造体を JSON に変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。