数据传输方式汇总
文章目录
json
JSON是一种更轻量级的基于文本的编码方式,经常用在client/server端的通讯中。
yaml
YAML类似JSON,新的特性更强大,更适合人类阅读,也更紧凑。
yaml支持的数据结构有三种:
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期
protobuf
protoc 是工具
protoc-gen-go 是生成.go文件的插件 配合protoc –go_out=XXX 使用 其他语言可能是 protoc-gen-java protoc –java_out=XXX
golang/protobuf,是结构体的编译/转义,等于json包编译/转义的使用
最近的项目中,一直使用Json做数据传输。Json用起来的确很方便。但相对于protobuf数据量更大些。做一个移动端应用,为用户省点流量还是很有必要的。
protobuf优点
- 性能更高,更加规范
- 编解码速度快,数据体积小
- 使用统一的规范,不用再担心大小写不同导致解析失败等蛋疼的问题了
protobuf缺点
- 改动协议字段,需要重新生成文件。
- 数据没有可读性
安装protoc
- macos可以用命令安装:brew install protobuf
- 将proto文件转换成go文件:protoc –go_out=. project/proto/*.proto
安装依赖包
|
|
protoc 数据类型
- repeated: 数组
- enum: 枚举值,转成 go 后变成常量定义