go protobuf 3 转化json_protobuf 指南

57a524e024c4923551f8d28c5f77ad7e.png
  • 简介
  • 安装
  • 语言定义
    • 特殊指令
    • 定义服务
    • JSON 支持
    • 选项
    • 生成代码
    • 基础类型
    • 更新 message
  • Golang 下使用
  • 参考

简介

Protocol Buffers 是 google 出品的一种数据交换格式, 缩写为 protobuf.

主要介绍 proto3 版本和 Golang 下的使用.

安装

protobuf 分为编译器和运行时两部分. 编译器直接使用预编译的二进制文件即可, 可以从 releases 上下载.

protobuf 运行时就是不同语言对应的库, 以 Golang 为例:

go get github.com/golang/protobuf/protoc-gen-go

语言定义

protobuf 现在有两个版本, proto2 和 proto3. 本着学新不学旧的原则, 这里只介绍 proto3.

既然是一种数据交换格式, 必然是要学习它的语法的, 就像学习 JSON 一样, 你总得知道如何定义.

默认的文件是 .proto.

下面是一个简单的例子, 来自于官方文档.

syntax = "proto3";

message SearchRequest {
    
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
}

首行定义了语法版本, 即使用 proto3 版本. 然后定义了一个名为 SearchRequest 的 message, 以及它包含的字段(键值对). message 的结构非常类似于各种语言中的 struct, dict 或者 map.

每个字段包括三个部分, 类型, 字段名和字段编号. 前两个部分非常易懂, 主要解释一下字段编号. 在同一个 message 中字段编号应该是唯一的, 用于在 message 的二进制格式(message binary format)中标识字段. 因此数字的大小决定了编码的长度, 1-15 的数字只占用一个字节.

注释语法是 ///* ... */.

特殊指令

使用 reserved 注明已被废弃的字段编号和字段名称.

message Foo {
    
  reserved 2, 15, 9 to 11;
  reserved "foo", "bar";
}

使用 repeated 可以指定

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误信息表示找不到protobufProtocol Buffers)库,具体缺失的部分有protobuf_libraries和protobuf_include_dir。 解决这个问题的方法如下: 1. 确认是否已经安装了protobuf库。可以通过在命令行运行"pip list"或"conda list"查看已安装的库。如果未安装,可以使用包管理工具如pip或conda进行安装(例如,"pip install protobuf")。 2. 如果已经安装了protobuf库,但仍然报错,可能是由于缺少protobuf_libraries和protobuf_include_dir变量的路径。可以在系统的环境变量中设置这两个变量。protobuf_libraries变量应指向protobuf库的二进制文件路径,而protobuf_include_dir变量应指向protobuf库的头文件路径。 3. 如果已经设置了这两个变量,但仍然出现错误,那么可能是因为这些路径设置不正确或者protobuf库的安装位置与预期不符。可以通过重新安装protobuf库,并确保设置路径正确来解决问题。 4. 如果仍然无法解决问题,可以尝试手动下载并安装protobuf库。在protobuf的官方GitHub页面上可以找到最新的发布版本,并提供了安装步骤。按照步骤下载并安装protobuf库,然后再次检查路径设置是否正确。 总之,缺少protobufprotobuf_libraries和protobuf_include_dir)错误通常表示系统无法找到protobuf库。通过确认库是否已安装、设置正确的路径和重新安装protobuf库等方法,可以解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值