go struct 与 json

栏目: Go · 发布时间: 7年前

内容简介:使用marshal方法进行编码。

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程序设计语言

Go程序设计语言

艾伦 A. A. 多诺万 / 李道兵、高博、庞向才、金鑫鑫、林齐斌 / 机械工业出版社 / 2017-5 / 79

本书由《C程序设计语言》的作者Kernighan和谷歌公司Go团队主管Alan Donovan联袂撰写,是学习Go语言程序设计的指南。本书共13章,主要内容包括:Go的基础知识、基本结构、基本数据类型、复合数据类型、函数、方法、接口、goroutine、通道、共享变量的并发性、包、go工具、测试、反射等。 本书适合作为计算机相关专业的教材,也可供Go语言爱好者阅读。一起来看看 《Go程序设计语言》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码