zoukankan      html  css  js  c++  java
  • 11.处理模型中json tag不一致的问题

    处理模型中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




  • 相关阅读:
    leetcode 34 rust
    leetcode 2 rust
    leetcode 1 rust
    leetcode 20 rust
    leetcode 287 rust
    leetcode 18 rust
    lottery抽奖
    webpack
    webpack(7)-生产环境
    webpack(6)-模块热替代&tree shaking
  • 原文地址:https://www.cnblogs.com/hualou/p/12103678.html
Copyright © 2011-2022 走看看