Golang encoding: Difference between revisions
From wikinotes
(Created page with "Golang's <code>encoding</code> module defines the interfaces for data serialization. = Basics = <blockquote> Each method of encoding implements at least one of these interfaces <syntaxhighlight lang="go"> type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } type BinaryUnmarshaler interface { UnmarshalBinary(data []byte) error } type TextMarshaler interface { MarshallText(text []byte) error } type TextUnmarshaler interface { UnmarshalText(t...") |
No edit summary |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Serializing and Deserializing objects. | |||
= | = Interface = | ||
<blockquote> | <blockquote> | ||
The encoding libraries mostly share a common interface, for serialization/deserialization.<br> | |||
Optional encoding-specific information is stored in struct-tags.<br> | |||
Some encodings (ex. xml) have additional encoding-specific semantics. | |||
serialize | |||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
type | type User struct { | ||
Id: int `json:"id" xml:"id"` | |||
Name: string `json:"name" xml:"name"` | |||
} | |||
user := User{1, "will"} | |||
bytes, err := json.Marshall(&user) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
deserialize | |||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
var mapping map[string]int | |||
var serialized := []byte(`{"a": 1}`) | |||
json.Unmarshall(serialized, &mapping) | |||
</syntaxhighlight> | |||
</blockquote><!-- Interface --> | |||
</ | = Libraries = | ||
</blockquote><!-- | <blockquote> | ||
== Builtin == | |||
<blockquote> | |||
{| | |||
|- | |||
| [[golang encoding/json]] | |||
|- | |||
| [[golang encoding/xml]] | |||
|- | |||
| [[golang encoding/csv]] | |||
|- | |||
|} | |||
</blockquote><!-- Builtin --> | |||
</blockquote><!-- Libraries --> |
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