gofast设置字段tag

以下内容均使用gogo protobuf

设置json 标签内容

其方法就是往FieldOptions追加内容。

  1. 在下载的protoc压缩包中的include/descriptor.proto弄到项目中,

  2. 然后在新的proto文件中写入

    //65005是json的Field,其设置可在gogo.pb.go查看
    extend google.protobuf.FieldOptions {
      optional string jsonTag = 65005;
    }
    
  3. 在需要设置自定义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的源码。

  1. generateInternalStructFields方法中

    在 `json:\"-\"后面追加    bson:\"-\"
    
  2. generateMessage方法中,循环分配字段时设置bsonTag(其内容bson: jsonTag)
    再将bsonTag填入到tag中

  3. 使用gofast go build生成的gofast就能生成与json一样的bson tag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值