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 サイトの他の関連記事を参照してください。