ex. var p = Person{}; json.Marshal(p)
json.marshal return byte slice contains long string wuthout extraneous
Ex.data, err = json.MarshalIndent to format jaon. Use fmt.Printf(”%s”,data) to print to string
Only exported fields are marshalled
Field tags is a string of meta data associated at compile time with a field of a struct.
Ex. type S struct {num int `json:“release”`, real bool `json:“ok,omitempty”`}
omitempty indicate no output value if variable is zero value
Unmarshal object. json.Unmarshal
Ex. Unmarshal json to slice. (How the type is decided? Always slice?)
Ex. type Person struct {Name string}; ps := json.Unmarshal(json)
var titles []struct{ Title string }; if err := json.Unmarshal(data, &titles);
Field of Struct used to unmarshal json must be capitalized. But map from json to struct is case insensitive