ホームページ >バックエンド開発 >Golang >golangでのシリアル化と逆シリアル化の方法は何ですか

golangでのシリアル化と逆シリアル化の方法は何ですか

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2023-12-18 10:11:511000ブラウズ

Go 言語のシリアル化と逆シリアル化は、データをバイト ストリーム形式に変換することで実現できます。一般的な方法には、「JSON のシリアル化と逆シリアル化」、「XML のシリアル化と逆シリアル化」、「gob のシリアル化と逆シリアル化」、「プロトコル バッファー」などがあります。 「シリアル化と逆シリアル化」の 4 つのタイプ: 1. 「json.Marshal()」を使用してデータ構造を JSON 形式のバイト ストリームにシリアル化します; 2. xml.Marshal() を使用してデータ構造を XML 形式のバイト ストリームにシリアル化します。等々。

golangでのシリアル化と逆シリアル化の方法は何ですか

# このチュートリアルのオペレーティング システム: Windows 10 システム、Dell G3 コンピューター。

#Go 言語では、シリアル化と逆シリアル化は通常、データをバイト ストリーム (または他の可搬形式) に変換することによって実装されます。一般的に使用されるいくつかのシリアル化および逆シリアル化メソッドを次に示します。

  1. JSON シリアル化および逆シリアル化: Go 言語には標準ライブラリのエンコーディング/json が組み込まれており、json.Marshal() を使用してデータを変換できます。構造は JSON 形式のバイト ストリームにシリアル化されます。json.Unmarshal() を使用して、JSON 形式のバイト ストリームをデータ構造に逆シリアル化します。
import "encoding/json"

// 序列化为JSON
data, err := json.Marshal(obj)

// 反序列化JSON
err = json.Unmarshal(data, &obj)
  1. XML シリアル化と逆シリアル化: Go 言語には標準ライブラリのエンコーディング/xml が組み込まれており、xml.Marshal() を使用してデータ構造をバイト ストリームにシリアル化できます。 XML 形式。xml.Unmarshal() を使用して、XML 形式のバイト ストリームをデータ構造に逆シリアル化します。
import "encoding/xml"

// 序列化为XML
data, err := xml.Marshal(obj)

// 反序列化XML
err = xml.Unmarshal(data, &obj)
  1. gob のシリアル化と逆シリアル化: Go 言語には標準ライブラリのエンコーディング/gob が組み込まれており、 gob.NewEncoder() と gob.NewDecoder() を使用してエンコーダとデコーダを作成できます。シリアル化と逆シリアル化のために、それぞれ Encode() メソッドと Decode() メソッドを呼び出します。
import "encoding/gob"

// 序列化为字节流
var buffer bytes.Buffer
encoder := gob.NewEncoder(&buffer)
err = encoder.Encode(obj)
data := buffer.Bytes()

// 反序列化字节流
decoder := gob.NewDecoder(bytes.NewReader(data))
err = decoder.Decode(&obj)
  1. プロトコル バッファー (protobuf) のシリアル化と逆シリアル化: Go 言語では、効率的なシリアル化に protobuf プロトコルを使用できるサードパーティ ライブラリ github.com/golang/protobuf/proto が提供されています。そしてデシリアライズ。
import "github.com/golang/protobuf/proto"

// 序列化为字节流
data, err := proto.Marshal(obj)

// 反序列化字节流
err = proto.Unmarshal(data, obj)

上記は、一般的に使用されるシリアル化および逆シリアル化の方法の一部です。特定のニーズやシナリオに応じて、適切な方法を選択してください。

以上がgolangでのシリアル化と逆シリアル化の方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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