美文网首页
go struct 与 json

go struct 与 json

作者: qingshuiting | 来源:发表于2018-10-28 12:23 被阅读0次

    go struct 与 json

    https://golang.org/pkg/encoding/json/#pkg-index

    成员标签-tag

    https://sosedoff.com/2016/07/16/golang-struct-tags.html

    Only data structures that can be represented as valid JSON will be encoded:
    
    JSON objects only support strings as keys; to encode a Go map type it must be of the form map[string]T (where T is any Go type supported by the json package).
    // JSON的key只能是string类型,所有在支持Map的情况下,需要其对应的Map的key是string类型。
    
    Channel, complex, and function types cannot be encoded.
    // 这些类型是无法被encoded的
    
    Cyclic data structures are not supported; they will cause Marshal to go into an infinite loop.
    // 循环数据类型无法被encoded
    
    Pointers will be encoded as the values they point to (or 'null' if the pointer is nil).
    // 指针类型可以被encoded
    The json package only accesses the exported fields of struct types (those that begin with an uppercase letter). Therefore only the the exported fields of a struct will be present in the JSON output.
    // 只能访问那些exported的struct types类型的field(大写字母开头的)
    

    使用

    encode

    使用marshal方法进行编码。

    func Marshal(v interface{}) ([]byte, error)
    

    举例使用一个go定义的一个structure Message

    type Message struct {
        Name string
        Body string
        Time int64
    }
    

    使用一个Message的实例被编码完以后的结果类似于下面

    b == []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`)
    

    编码中需要注意的内容

    Only data structures that can be represented as valid JSON will be encoded:

    JSON objects only support strings as keys; to encode a Go map type it must be of the form map[string]T (where T is any Go type supported by the json package).

    // JSON的key只能是string类型,所有在支持Map的情况下,需要其对应的Map的key是string类型。

    Channel, complex, and function types cannot be encoded.

    // 这些类型是无法被encoded的

    Cyclic data structures are not supported; they will cause Marshal to go into an infinite loop.

    // 循环数据类型无法被encoded

    Pointers will be encoded as the values they point to (or 'null' if the pointer is nil).

    // 指针类型可以被encoded

    The json package only accesses the exported fields of struct types (those that begin with an uppercase letter). Therefore only the the exported fields of a struct will be present in the JSON output.

    // 只能访问那些exported的struct types类型的field(大写字母开头的)

    decode

    https://blog.golang.org/json-and-go

    相关文章

      网友评论

          本文标题:go struct 与 json

          本文链接:https://www.haomeiwen.com/subject/cipptqtx.html