Golang encoding: Difference between revisions

From wikinotes
No edit summary
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
Serializing and Deserializing objects.
= Interface =
= Interface =
<blockquote>
<blockquote>
The encoding libraries share a common interface, making it easy to swap between serialization formats.<br>
The encoding libraries mostly share a common interface, for serialization/deserialization.<br>
Simply swap out the library (here <code>json</code>) for your desired output format.
Optional encoding-specific information is stored in struct-tags.<br>
Some encodings (ex. xml) have additional encoding-specific semantics.


serialize
serialize
<syntaxhighlight lang="go">
<syntaxhighlight lang="go">
type User struct {
type User struct {
     Id:  int
     Id:  int   `json:"id" xml:"id"`
     Name: string
     Name: string `json:"name" xml:"name"`
}
}
user := User{1, "will"}
user := User{1, "will"}

Latest revision as of 13:50, 26 June 2022

Serializing and Deserializing objects.

Interface

The encoding libraries mostly share a common interface, for serialization/deserialization.
Optional encoding-specific information is stored in struct-tags.
Some encodings (ex. xml) have additional encoding-specific semantics.

serialize

type User struct {
    Id:   int    `json:"id" xml:"id"`
    Name: string `json:"name" xml:"name"`
}
user := User{1, "will"}
bytes, err := json.Marshall(&user)

deserialize

var mapping map[string]int
var serialized := []byte(`{"a": 1}`)
json.Unmarshall(serialized, &mapping)

Libraries

Builtin

golang encoding/json
golang encoding/xml
golang encoding/csv