インターネット時代の到来により、データの送信と処理はますます重要になってきました。最新のソフトウェア開発プロセスでは、データを処理する能力が非常に重要です。最新のプログラミング言語として、Golang 言語は強力なデータ処理機能を備えています。その中でも、Golang の構造を JSON 形式に変換することは非常に一般的です。この記事では、Golang の JSON への変換方法と、それを Golang で使用する方法について説明します。
JSON エンコードとデコードに Golang 標準ライブラリを使用する
Golang は、JSON 形式のエンコードとデコードを処理するための標準ライブラリを提供します。 Golang の標準ライブラリでは、encoding/json パッケージは、JSON 形式を Golang 型に変換したり、逆に変換したりするためのメソッドを提供します。このうち、Marshal 関数は Golang 形式を JSON 形式に変換し、Unmarshal 関数は JSON 形式を Golang 形式に変換します。
まず、構造を JSON 形式に変換する簡単な例を見てみましょう。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{"Tom", 24} b, err := json.Marshal(p) if err != nil { fmt.Println("Error: ", err) } fmt.Println(string(b)) }
出力:
{"name":"Tom","age":24}
上記の例では、Person という名前の構造体を作成し、Marshal 関数を使用してそれを JSON 形式に変換しました。変換処理では、構造体の属性名「Name」は「name」に変換され、「Age」は「age」に変換されます。
同様に、Unmarshal 関数を使用して JSON 形式を Golang 型に変換することもできます。簡単な例を次に示します:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonString := `{"name":"Tom","age":24}` var p Person err := json.Unmarshal([]byte(jsonString), &p) if err != nil { fmt.Println("Error: ", err) } fmt.Println(p) }
出力:
{Tom 24}
上記の例では、Unmarshal 関数を使用して JSON 形式の文字列を Golang 型に変換し、その型を変数 p に格納します。 。
JSON 形式の文字列を解析するときは、ターゲット ポインターを渡す必要があります。解析が成功すると、このポインタが指す変数に JSON データが格納されます。
JSON を Golang 型に解析するときは、いくつかの詳細に注意する必要があります。たとえば、JSON のブール値 true と false は、Golang では bool 型として解析されます。数値は、JSON のデータ型と範囲に応じて、float、integer、または int64 型として解析されます。
JSON エンコードとデコードにはサードパーティ ライブラリを使用する
Golang で提供される標準ライブラリはシンプルで使いやすいですが、パフォーマンスは最高ではありません。一部の大規模な JSON データまたは複雑なデータ構造の場合、JSON エンコードおよびデコードに標準ライブラリを使用すると、プログラムのパフォーマンスが低下する可能性があります。したがって、多くのサードパーティ ライブラリが登場し、広く使用されています。
その中で、最も人気のあるライブラリの 1 つは json-iterator/go です。このライブラリは、標準ライブラリよりも高速な JSON エンコードとデコードを提供でき、使い方は非常に簡単です。
json-iterator/go ライブラリを使用した簡単な例を見てみましょう:
package main import ( "fmt" "github.com/json-iterator/go" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{"Tom", 24} json := jsoniter.ConfigCompatibleWithStandardLibrary b, err := json.Marshal(p) if err != nil { fmt.Println("Error: ", err) } fmt.Println(string(b)) }
出力結果は標準ライブラリと同じです:
{"name":"Tom","age":24}
上の例ではでは、json-iterator/go ライブラリで提供される ConfigSupportWithStandardLibrary 変数を使用して、JSON エンコードとデコードが標準ライブラリと一貫していることを確認しました。
概要
この記事では、Golang 言語での JSON エンコードおよびデコード方法について説明します。標準ライブラリを使用して Golang 型を JSON 形式に変換するのは非常に簡単で、ほとんどのニーズを満たすことができます。パフォーマンスの問題が発生した場合、またはより高度な機能が必要な場合は、json-iterator/go などのサードパーティ ライブラリを使用することをお勧めします。どのライブラリを使用する場合でも、JSON のエンコードとデコードの正確性を確保するには、データ型の変換と詳細に注意を払う必要があります。
以上がgolang でデータを json 形式に変換する方法について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。