处理模型中json tag不一致的问题
举个例子服务端返回的地址插件如下,使用的tag所以服务端返回的json字段名为pid,和pname
type ProdModel struct {
ProdId int `json:"pid"`
ProdName string `json:"pname"`
}
然而我们proto文件定义的是这样的,很明显两个字段名字对不上,那么我们用proto文件生成的model去解析response的时候就会解析不出来了
message ProdModel {
int32 ProdID = 1;
string ProdName = 2;
}
使用一个第三方插件来解决这个问题
修改一下proto文件,在proto中加上这样的注释,就会在生成pb文件的时候把所需要的tag改掉
syntax = "proto3";
package Models;
message ProdModel {
// @inject_tag: json:"pid"
int32 ProdID = 1;
// @inject_tag: json:"pname"
string ProdName = 2;
}
message ProdRequest {
int32 size = 1;
}
message ProdListResponse {
repeated ProdModel data = 1;
}
执行这两条命令,注意有先后顺序,要先生成了pb文件,才能用这个第三包去修改他的tag
protoc --micro_out=../ --go_out=../ Prods.proto
protoc-go-inject-tag -input=../Prods.pb.go