#Go 言語では、シリアル化と逆シリアル化は通常、データをバイト ストリーム (または他の可搬形式) に変換することによって実装されます。一般的に使用されるいくつかのシリアル化および逆シリアル化メソッドを次に示します。
- JSON シリアル化および逆シリアル化: Go 言語には標準ライブラリのエンコーディング/json が組み込まれており、json.Marshal() を使用してデータを変換できます。構造は JSON 形式のバイト ストリームにシリアル化されます。json.Unmarshal() を使用して、JSON 形式のバイト ストリームをデータ構造に逆シリアル化します。
import "encoding/json" // 序列化为JSON data, err := json.Marshal(obj) // 反序列化JSON err = json.Unmarshal(data, &obj)
- XML シリアル化と逆シリアル化: Go 言語には標準ライブラリのエンコーディング/xml が組み込まれており、xml.Marshal() を使用してデータ構造をバイト ストリームにシリアル化できます。 XML 形式。xml.Unmarshal() を使用して、XML 形式のバイト ストリームをデータ構造に逆シリアル化します。
import "encoding/xml" // 序列化为XML data, err := xml.Marshal(obj) // 反序列化XML err = xml.Unmarshal(data, &obj)
- 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)
- プロトコル バッファー (protobuf) のシリアル化と逆シリアル化: Go 言語では、効率的なシリアル化に protobuf プロトコルを使用できるサードパーティ ライブラリ github.com/golang/protobuf/proto が提供されています。そしてデシリアライズ。
import "github.com/golang/protobuf/proto" // 序列化为字节流 data, err := proto.Marshal(obj) // 反序列化字节流 err = proto.Unmarshal(data, obj)
上記は、一般的に使用されるシリアル化および逆シリアル化の方法の一部です。特定のニーズやシナリオに応じて、適切な方法を選択してください。