Golang encoding/json: Difference between revisions
From wikinotes
Line 48: | Line 48: | ||
names := []string{"maize", "sprout"} | names := []string{"maize", "sprout"} | ||
bytes, _ := json.Marshal(names) | bytes, _ := json.Marshal(names) | ||
fmt.Println(string(bytes)) | fmt.Println(string(bytes)) // '["maize", "sprout"]' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</blockquote><!-- Builtins --> | </blockquote><!-- Builtins --> |
Revision as of 17:33, 25 June 2022
Conveniently, the builtin types are ready for json serialization/deserialization without any additional work.
Deserializing
Builtins
// string, int var name string json.Unmarshal([]byte(`"vaderd"`), &name) fmt.Println(name) // array, slice var items [2]string json.Unmarshal([]byte(`["abc", "def"]`), &items) fmt.Println(items) // [abc def]Json-Object to Struct
type User struct { id int Name string } func main() { var user User data := []byte(`{"id": 123, "Name": "vaderd"}`) json.Unmarshal(data, &user) fmt.Println(user.Name) }
Serializing
Builtins
// string, int bytes, _ := json.Marshal("vaderd") fmt.Println(string(bytes)) // '"vaderd"' // array, slice names := []string{"maize", "sprout"} bytes, _ := json.Marshal(names) fmt.Println(string(bytes)) // '["maize", "sprout"]'Slice to Json-Array
Struct to Json-Object