美文网首页
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

    go struct 与 json https://golang.org/pkg/encoding/json/#pk...

  • Golang -- Json序列化

    简述 在使用Go Struct的Json Marshal的时候,通过Json To Go Struct工具可以生成...

  • 11 - json相关

    使用反射 struct_def.go json_test.go 你可以看到,我们使用内置的 json 模块进行解析...

  • 十.Go结构struct

    结构struct Go中的struct与C中的struct相似,并且go没有class 使用type 结构名称 s...

  • 《日子》golang-结构struct

    结构struct -Go中的struct与C中的struct非常相似,并且Go没有class-使用type

  • golang-web: struct结构体转成JSON

    Go_14:GoLang中 json、map、struct 之间的相互转化https://www.cnblogs....

  • 10 结构体struct

    Go 中的struct与C中的struct非常相似,并且Go没有class使用 type struc...

  • 第五节结构struct

    struct相当于面向对象中的class 1.go中的struct与c中的struct非常相识,并且go没有cla...

  • go json处理空struct

    go在处理json时,tag中如果添加omitempty表示此字段为空时,不输出。 但如果此字段是struct时是...

  • go json 实践中遇到的坑

    在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过...

网友评论

      本文标题:go struct 与 json

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