Serialization

All data structures can be serialized (marshalled) and deserialized (unmarshalled). Currently only JSON support is available.

JSONSerializer

Outputs the container into its JSON representation.

Typical usage for key-value structures:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/emirpasic/gods/maps/hashmap"
  5. )
  6. func main() {
  7. m := hashmap.New()
  8. m.Put("a", "1")
  9. m.Put("b", "2")
  10. m.Put("c", "3")
  11. json, err := m.ToJSON()
  12. if err != nil {
  13. fmt.Println(err)
  14. }
  15. fmt.Println(string(json)) // {"a":"1","b":"2","c":"3"}

Typical usage for value-only structures:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/emirpasic/gods/lists/arraylist"
  5. )
  6. func main() {
  7. list := arraylist.New()
  8. list.Add("a", "b", "c")
  9. json, err := list.ToJSON()
  10. if err != nil {
  11. fmt.Println(err)
  12. }
  13. fmt.Println(string(json)) // ["a","b","c"]
  14. }

JSONDeserializer

Populates the container with elements from the input JSON representation.

Typical usage for key-value structures:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/emirpasic/gods/maps/hashmap"
  5. )
  6. func main() {
  7. hm := hashmap.New()
  8. json := []byte(`{"a":"1","b":"2"}`)
  9. err := hm.FromJSON(json)
  10. if err != nil {
  11. fmt.Println(err)
  12. }
  13. fmt.Println(hm) // HashMap map[b:2 a:1]
  14. }

Typical usage for value-only structures:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/emirpasic/gods/lists/arraylist"
  5. )
  6. func main() {
  7. list := arraylist.New()
  8. json := []byte(`["a","b"]`)
  9. err := list.FromJSON(json)
  10. if err != nil {
  11. fmt.Println(err)
  12. }
  13. fmt.Println(list) // ArrayList ["a","b"]
  14. }