【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty
参考了这篇帖子:golang protobuf从生成的json标记中删除omitempty标记
由于是在windows上开发,因此写了一个python脚本来解决:
remove_tag.py
import sys
def main():
    argc = len(sys.argv)
    if argc<2:
        print('usage:%s <xxx.go>'%sys.argv[0])
        return
    f = open(sys.argv[1], 'rb')
    if not f:
        print("open file error:%s"%sys.argv[1])
        return
    s = f.read().decode('utf-8')
    f.close()
    s = s.replace(',omitempty', '')
    #
    f = open(sys.argv[1], 'wb')
    f.write(s.encode('utf-8'))
    f.close()
    print('ok')
if __name__=='__main__':
    main()
然后生成pb.go的bat文件这样写:
gen_pb.bat
protoc --plugin=protoc-gen-go.exe --go_out=../ *.proto
python remove_tag.py ../src/pb/interface.pb.go
												
											【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty的更多相关文章
- 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义
		
代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...
 - 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误
		
编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...
 - 【解决了一个小问题】golang中引用一个路径较长的库,导致goland中出现"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"
		
在项目中的go.mod文件中有这样一句: require ( github.com/xxx-devops/xx1/sdk/go v2.2.3 ) 项目的编译没有问题,但是goland中出现如下提示: ...
 - 【解决了一个小问题】golang的go.mod中出现版本错误
		
代码中的这一句使用prometheus2.28.0版本的代码: import "github.com/prometheus/prometheus/prompb" 我把require ...
 - 【解决了一个小问题】golang samara的kafka客户端中使用错误版本号导致初始化失败
		
发现在如下代码中存储kafka生产者初始化失败: config.Version = sarama.V0_10_2_1 //V2_2_0_0 producer, err := sarama.NewSyn ...
 - 【解决了一个小问题】golang xorm中使用where id in (xxx),没办法使用参数替换
		
代码中使用XORM来从数据库查询数据,有类似如下的代码: session.Where("id in (?)", strings,Join(arr, ",")) ...
 - 【解决了一个小问题】golang go.mod中多了一个斜杠导致replace无效
		
replace github.com/sxxx/common_lib/src/ => ../../common_lib/src 修改成 replace github.com/sxxx/commo ...
 - 【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本
		
我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx. ...
 - 【解决了一个小问题】如何展示VictoriaMetrics组件上报的bucket数据
		
VM体系还真的是不一(he)样(qun), 它上报的监控数据长这样: vmagent_remotewrite_block_size_rows_bucket{vmrange="2.448e+0 ...
 
随机推荐
- CF53C Little Frog 题解
			
Content 有一只小青蛙想游历 \(n\) 块土堆,它现在在 \(1\) 号土堆上,每次可以跳跃任意距离到达另外的一个土堆.它想让每次跳跃的距离都不相等,试找到这样的一个方案. 数据范围:\(1\ ...
 - Tornado WEB服务器框架 Epoll
			
引言: 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会 ...
 - navicat模型分享方法
			
一. 查看模型保存路径选中模型如:<app-订单模型>,点击右键,对象信息,可以看到文件位置:C:\Users\Administrator\Documents\Navicat\Premiu ...
 - .Net Core 项目发布在IIS上 访问404 问题对应
			
对策: 1.进入线程池画面,将当前程序的线程池设为"无托管代码" 2.修改配置文件 Web.config,加上配置 原因: 因为.NetCore 5.0 自带集成了Swag ...
 - Windows c(++)获取磁盘剩余容量
			
头文件 #include <windows.h> #include <wtypes.h> 函数 GetDiskFreeSpaceExA 获取剩余可用空间 /// 得到盘符, 例 ...
 - 1076 - Get the Containers
			
1076 - Get the Containers PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
 - python学习第四天:python基础(字符编码和乱码到底咋回事儿)
			
字符编码 这得从字符编码开始说起: 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题.因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理. 最早的计算机在设计时采 ...
 - Orcale
			
oracleoracle中不存在引擎的概念,数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line An ...
 - 剖析Defi之Uinswap_2
			
学习核心合约UniswapV2Pair,在父合约UniswapV2ERC20的基础上增加资产交易及流动性提供等功能. 交易对合约本身是erc20合约,代币表示流动性,代币在提供流动性的地址里,当提供流 ...
 - Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。
			
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...