-
golang JSON和struct的转换,[]byte作为中介
-
Json to struct:
json string -> []byte -> struct
其中,
[]byte -> struct
这一步use json.Unmarshal(data []byte, v interface{})-
json.Unmarshal 到 map
package main import "fmt" import "encoding/json" func main () { s := "{\"abc\":1}" var data = map[string]int{"ab":2} err := json.Unmarshal(([]byte)(s), &data) if err != nil { fmt.Println(err) return } fmt.Println(data) } >>> map[ab:2 abc:1] // 不影响原来的k v
package main import "fmt" import "encoding/json" func main () { s := "{\"abc\":1}" var data = map[string]int{"abc":2} err := json.Unmarshal(([]byte)(s), &data) if err != nil { fmt.Println(err) return } fmt.Println(data) } >>> map[abc:1] // 覆盖原有k v
-
json.Unmarshal 到 slice
package main import "fmt" import "encoding/json" func main () { s := "[\"abc\",1]" var data = []interface{}{"ab",2} fmt.Println("ori data is ", data) err := json.Unmarshal(([]byte)(s), &data) if err != nil { fmt.Println(err) return } fmt.Println("after unmarshal data is ", data) } >>> ori data is [ab 2] after unmarshal data is [abc 1] // unmarshal到slice会先清空再写入
-
-
struct to JSON:
struct -> []byte -> json string
其中,
struct -> []byte
这一步use json.Marshal(v interface{}) -
More info see: https://sanyuesha.com/2018/05/07/go-json/
-
网友评论