golang unmarshal json对象默认为map [string] interface {},如何将其解组为[] byte?因为在得到它的Type之后我需要将它解组成一个struct实例。
答案 0 :(得分:2)
为什么不直接将json
解组到结构中?
或者如果你有更多的对象进入结构片?
package main
import (
"encoding/json"
"fmt"
)
type TestJson struct {
Foo string
Baz string
}
var (
jsonValue = `{"FOO" : "BAR", "BAZ" : "QUX"}`
jsonValueSlice = `[{"FOO" : "BAR", "BAZ" : "QUX"},{"FOO" : "Second BAR", "BAZ" : "Second QUX"}]`
)
func main() {
t := TestJson{}
err := json.Unmarshal([]byte(jsonValue), &t)
if err != nil {
fmt.Println(err)
}
fmt.Printf("%+v\n", t)
t2 := []TestJson{}
err2 := json.Unmarshal([]byte(jsonValueSlice), &t2)
if err2 != nil {
fmt.Println(err2)
}
fmt.Printf("%+v\n", t2)
}
编辑: Go默认情况下不会解组到map [string] interface {}中,阅读文档!
func Unmarshal(data []byte, v interface{}) error
只要您的数据一致,Golang json.Unmarshal就可以基本上填充任何内容。