校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > golang中使用proto3協議導致的空值字段不顯示的問題處理方案

golang中使用proto3協議導致的空值字段不顯示的問題處理方案

熱門標簽:賺地圖標注的錢犯法嗎 烏魯木齊人工電銷機器人系統 澳門防封電銷卡 福州鐵通自動外呼系統 智能電銷機器人營銷 長沙ai機器人電銷 廣東語音外呼系統供應商 濮陽自動外呼系統代理 地圖標注測試

最近在使用grpc協議的時候,由于采用的是Proto3協議,在查找記錄信息的時候,由于某些字段會有默認空值,導致在通過協議調用后,返回的json結構中并沒有這些字段,雖然作為前端使用沒有太大的問題,但是在更多的使用場景中,我們更需要知道該服務返回的確切字段,以便于能夠做相應處理,尤其是編譯型語言

具體的使用出現場景如下

type MemberResponse struct {
  Id int32 `json "id"`
  Phone string `json "phone"`
  Age int8 `json "age"`
}

//獲取用戶信息的接口
func (m *Member) GetMember(req *proto.MemberRequest, resp * proto.MemberResponse) error {
  resp.Phone = "15112810201"
  resp.Id = 12
  return nil
}

當通過api調用該微服務后,在proto3協議下,會返回如下結果:

{
  "phone" : "15112810201",
  "id"  : 12
}

此時就會出現空值的Age字段沒有返回到對應的json結構中,而這樣在某些情況下對前端也是不太友好的,尤其是APP客戶端,更需要明確的json響應字段結構,那么我們可以怎么處理這個問題呢,經過研究和網上的解答,有兩種辦法:

  1. 直接修改經過protoc生成的member.pb.go文件代碼,刪除掉不希望被忽略的字段tag標簽中的omitempty即可,但是*.pb.go一般我們不建議去修改它,而且我們會經常去調整grpc微服務協議中的方法或者字段內容,這樣每次protoc之后,都需要我們去修改,這顯然是不太現實的,因此就有了第二種辦法;
  2. 通過grpc官方庫中的jsonpb來實現,官方在它的設定中有一個結構體用來實現protoc buffer轉換為JSON結構,并可以根據字段來配置轉換的要求,結構體如下:
// Marshaler is a configurable object for converting between
// protocol buffer objects and a JSON representation for them.
type Marshaler struct {
  // 是否將枚舉值設定為整數,而不是字符串類型.
  EnumsAsInts bool
  // 是否將字段值為空的渲染到JSON結構中
  EmitDefaults bool
  //縮進每個級別的字符串
  Indent string
  //是否使用原生的proto協議中的字段
  OrigName bool
}

了解了這個結構體之后呢,我們就開始對應的使用辦法:

通過Marshaler結構體的Marshal方法,實現了將proto響應的內容轉化為buffer,最終輸出為JSON結構,從而實現了空值字段的返回

import (
  member "proto/member"
)
var jsonpbMarshaler *jsonpb.Marshaler

func queryHandler(req *http.Requst, resp http.ResponseWriter){
  var (
    _buffer bytes.Buffer
  )
  memberResponse, err := member.GetMember(context.TODO(), member.MemberRequest{})
  //調用此方法實現轉換
  jsonpbMarshaler.Marshal(_buffer, memberResponse)
  jsonCnt := _buffer.Bytes()
  resp.Header().Set('Content-Type', 'application/json')
  resp.Write(jsonCnt)
  return
}

func main(){
  jsonpbMarshaler = jsonpb.Marshaler{
    EnumsAsInts : true,
    EmitDefaults: true,
    OrigName  : true
  }
  //其他http處理代碼塊
}

寫這篇文章只是為了吧這個解決方案分享給大家,希望對有此疑問的朋友們有所幫助。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 在go語言中安裝與使用protobuf的方法詳解

標簽:貴陽 西雙版納 阿克蘇 德州 調研邀請 太原 慶陽 廣西

巨人網絡通訊聲明:本文標題《golang中使用proto3協議導致的空值字段不顯示的問題處理方案》,本文關鍵詞  golang,中,使用,proto3,協議,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang中使用proto3協議導致的空值字段不顯示的問題處理方案》相關的同類信息!
  • 本頁收集關于golang中使用proto3協議導致的空值字段不顯示的問題處理方案的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    不卡一区在线观看| 97aⅴ精品视频一二三区| 亚洲精品欧美激情| 555夜色666亚洲国产免| 成人综合婷婷国产精品久久蜜臀| 亚洲第一成年网| 日韩伦理免费电影| 精品国产乱码久久久久久图片| 在线观看国产91| 成人免费av在线| 国产在线视频不卡二| 午夜在线电影亚洲一区| 国模无码大尺度一区二区三区| 亚洲精品视频一区| 中文字幕一区在线观看视频| 精品日韩一区二区三区免费视频| 欧美色中文字幕| 一本色道久久综合狠狠躁的推荐| 韩国一区二区视频| 免费在线一区观看| 亚洲成av人**亚洲成av**| 亚洲人成小说网站色在线| 国产亚洲美州欧州综合国| 欧美成人vps| 日韩欧美一区电影| 日韩一区二区三区精品视频| 欧美日本国产视频| 欧美日韩高清不卡| 欧美亚洲高清一区| 欧美网站一区二区| 一本色道a无线码一区v| 色诱视频网站一区| 91麻豆成人久久精品二区三区| 99在线精品观看| 北条麻妃国产九九精品视频| 粉嫩aⅴ一区二区三区四区| 国产一区二区三区黄视频| 国产一区二区精品久久99| 精品一区二区三区免费观看| 国内一区二区视频| 国产一区二区三区在线观看精品 | 久久综合av免费| 欧美哺乳videos| 精品福利视频一区二区三区| 精品国产一区久久| 欧美高清在线精品一区| 国产精品乱码妇女bbbb| 日韩毛片一二三区| 亚洲电影第三页| 免费日本视频一区| 国产成人亚洲综合色影视| 国产91丝袜在线播放九色| 成人免费黄色大片| 在线日韩一区二区| 日韩视频免费观看高清完整版在线观看 | 欧美人妖巨大在线| 欧美变态tickling挠脚心| 久久久久久久久久久99999| 国产精品看片你懂得| 亚洲精品免费在线播放| 日日摸夜夜添夜夜添精品视频| 日韩电影在线免费观看| 国产一区二区女| 成人小视频免费观看| 一本一本大道香蕉久在线精品| 欧美日韩在线免费视频| 精品三级在线观看| 中文字幕在线不卡| 午夜精品久久久久久久久久| 久久精品国产99| 成人午夜免费av| 欧美日韩在线直播| 久久久久99精品国产片| 亚洲精品乱码久久久久久| 91高清在线观看| 欧美一区二区免费视频| 中文字幕不卡在线播放| 日韩国产欧美在线视频| 成人三级伦理片| 欧美无砖砖区免费| 久久久.com| 亚洲一线二线三线视频| 国产成人在线网站| 欧美吻胸吃奶大尺度电影| 久久精品视频网| 亚洲国产一区二区视频| 国产盗摄精品一区二区三区在线| 欧美日韩一区在线| 国产精品丝袜在线| 久久国产精品区| 在线观看av不卡| 国产欧美日韩在线观看| 五月婷婷激情综合| 成人美女视频在线看| 日韩精品专区在线影院重磅| 亚洲日本韩国一区| 国产精品亚洲专一区二区三区| 欧美少妇bbb| 日韩毛片一二三区| 国产丶欧美丶日本不卡视频| 欧美一级精品在线| 亚洲午夜免费电影| www.亚洲色图| 国产亚洲美州欧州综合国| 欧美aaa在线| 欧美三级中文字幕| 一区二区三区四区不卡在线| 国产一区999| 欧美成人r级一区二区三区| 亚洲在线一区二区三区| 99久久精品免费精品国产| 久久婷婷久久一区二区三区| 肉肉av福利一精品导航| 欧美三区在线观看| 亚洲综合一二区| 91丨porny丨最新| 中文字幕一区不卡| 成人午夜精品在线| 国产欧美综合在线| 国产一区二区三区观看| 日韩精品一区二区三区视频播放| 婷婷亚洲久悠悠色悠在线播放| 91成人免费网站| 亚洲精品videosex极品| 91免费观看在线| 亚洲美女在线一区| 久久久久久久综合色一本| 狠狠色综合播放一区二区| 欧美大片一区二区三区| 老司机精品视频导航| 精品国产伦一区二区三区免费| 美女视频免费一区| 精品乱人伦一区二区三区| 奇米色一区二区| 欧美一区日韩一区| 久久精品国产99国产精品| 精品电影一区二区| 高清不卡在线观看av| 国产精品日韩成人| 91在线无精精品入口| 樱花草国产18久久久久| 色婷婷综合视频在线观看| 亚洲二区在线视频| 在线播放欧美女士性生活| 日本欧美加勒比视频| 欧美不卡一二三| 成人一级片网址| 亚洲美女视频一区| 欧美久久婷婷综合色| 日韩国产欧美在线观看| 精品99999| 成人午夜大片免费观看| 亚洲少妇30p| 欧美日韩中文一区| 久久国产精品99精品国产| 欧美激情一区二区三区四区| 色综合久久66| 免费成人在线影院| 中文字幕成人网| 欧美日韩国产一二三| 激情六月婷婷综合| 亚洲男同性恋视频| 日韩一区二区免费电影| 国产成人aaaa| 亚洲综合一区二区| 精品乱码亚洲一区二区不卡| 99热国产精品| 午夜精品福利一区二区蜜股av| 欧美大片日本大片免费观看| av在线不卡观看免费观看| 亚洲狠狠丁香婷婷综合久久久| 91精品午夜视频| 国产成人综合在线播放| 亚洲高清在线精品| 精品99999| 欧美午夜精品一区| 国产精品一品视频| 亚洲成人激情av| 国产欧美日韩在线观看| 欧美日韩亚洲不卡| 成人福利在线看| 奇米影视一区二区三区小说| 蜜桃av一区二区在线观看| 国产欧美va欧美不卡在线| 欧美日韩精品免费观看视频| 国产黄色精品视频| 日韩黄色在线观看| 亚洲三级免费观看| 2021国产精品久久精品| 欧美三级视频在线| 不卡影院免费观看| 国产一区二区三区视频在线播放| 一区二区高清在线| 亚洲国产精品99久久久久久久久| 4438x成人网最大色成网站| 91香蕉国产在线观看软件| 蜜桃精品在线观看| 亚洲成av人片在线观看无码| 亚洲人精品午夜| 国产欧美日韩在线视频|