參考了這篇帖子: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