golang unmarshal一个json对象到map [string] interface {}默认情况下,如何将它解组为[] byte?

时间:2015-06-15 07:51:45

标签: go

golang unmarshal json对象默认为map [string] interface {},如何将其解组为[] byte?因为在得到它的Type之后我需要将它解组成一个struct实例。

1 个答案:

答案 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就可以基本上填充任何内容。