以下内容均使用gogo protobuf
设置json 标签内容
其方法就是往FieldOptions追加内容。
-
在下载的protoc压缩包中的include/descriptor.proto弄到项目中, -
然后在新的proto文件中写入
extend google.protobuf.FieldOptions {
optional string jsonTag = 65005;
}
-
在需要设置自定义json标签的字段中做出以下设置 message Student {
string Id = 1[(test.jsonTag) = "_id"];
int32 age = 2;
}
编译出来的pb会变为
type Student struct {
Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"_id" bson:"_id"`
Age int32 `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty" bson:"age,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"`
XXX_unrecognized []byte `json:"-" bson:"-"`
XXX_sizecache int32 `json:"-" bson:"-"`
}
在tag中追加bson
如果想使用字段追加bson内容,需要修改generator.go的源码。
-
generateInternalStructFields方法中 在 `json:\"-\"后面追加 bson:\"-\"
-
generateMessage方法中,循环分配字段时设置bsonTag(其内容bson: jsonTag) 再将bsonTag填入到tag中 -
使用gofast go build生成的gofast就能生成与json一样的bson tag
|