In der Go-Sprache werden Serialisierung und Deserialisierung normalerweise durch Konvertieren von Daten in einen Bytestrom (oder ein anderes transportables Format) implementiert. Im Folgenden sind einige häufig verwendete Serialisierungs- und Deserialisierungsmethoden aufgeführt:
- JSON-Serialisierung und -Deserialisierung: Die Go-Sprache verfügt über eine integrierte Standardbibliothek für Codierung/JSON, und Sie können json.Marshal() verwenden, um die Datenstruktur in Bytes im JSON-Format zu serialisieren Stream verwenden Sie json.Unmarshal(), um den Bytestream im JSON-Format in eine Datenstruktur zu deserialisieren.
import "encoding/json" // 序列化为JSON data, err := json.Marshal(obj) // 反序列化JSON err = json.Unmarshal(data, &obj)
- XML-Serialisierung und -Deserialisierung: Die Go-Sprache verfügt über eine integrierte Standardbibliothek für Codierung/XML. Sie können xml.Marshal() verwenden, um die Datenstruktur in einen Byte-Stream im XML-Format zu serialisieren, und xml.Unmarshal( ), um einen XML-formatierten Bytestrom in eine Datenstruktur zu deserialisieren.
import "encoding/xml" // 序列化为XML data, err := xml.Marshal(obj) // 反序列化XML err = xml.Unmarshal(data, &obj)
- gob-Serialisierung und -Deserialisierung: Die Go-Sprache verfügt über eine integrierte Standardbibliothekskodierung/gob. Sie können gob.NewEncoder() und gob.NewDecoder() verwenden, um Encoder und Decoder zu erstellen und Encode() bzw. Decode aufzurufen .()-Methode zur Serialisierung und Deserialisierung.
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)
- Serialisierung und Deserialisierung von Protokollpuffern (Protobuf): Die Go-Sprache bietet eine Drittanbieterbibliothek unter github.com/golang/protobuf/proto, die das Protobuf-Protokoll für eine effiziente Serialisierung und Deserialisierung verwenden kann.
import "github.com/golang/protobuf/proto" // 序列化为字节流 data, err := proto.Marshal(obj) // 反序列化字节流 err = proto.Unmarshal(data, obj)
Die oben genannten sind einige häufig verwendete Serialisierungs- und Deserialisierungsmethoden. Wählen Sie die geeignete Methode entsprechend den spezifischen Anforderungen und Szenarien.