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

主頁 > 知識庫 > 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協議導致的空值字段不顯示的問題處理方案的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲一区在线观看免费| 久久―日本道色综合久久| 日韩精品一区二区三区视频播放| 亚洲精品久久久久久国产精华液| 色噜噜狠狠一区二区三区果冻| 亚洲视频在线一区| 日本高清不卡aⅴ免费网站| 亚洲一区在线电影| 精品久久久久久综合日本欧美| 国产精品综合在线视频| 国产精品网站在线观看| 欧美日韩中文国产| 国产乱码一区二区三区| 亚洲精品国产一区二区精华液| 欧美猛男超大videosgay| 狠狠色丁香久久婷婷综| 国产精品入口麻豆九色| 欧美精品一二三| 粉嫩av一区二区三区在线播放| 亚洲在线一区二区三区| 国产午夜久久久久| 69p69国产精品| 99久久婷婷国产综合精品 | 亚洲免费成人av| 91精品国模一区二区三区| 国产精品系列在线播放| 午夜不卡av免费| 中文字幕一区二区在线观看| 日韩欧美在线1卡| 色国产精品一区在线观看| 国产一区二区三区在线观看免费视频 | 久久精品网站免费观看| 欧美影院午夜播放| 国产xxx精品视频大全| 日本麻豆一区二区三区视频| 亚洲婷婷在线视频| 久久蜜臀精品av| 日韩三级电影网址| 欧美色图在线观看| 99久久99久久综合| 国产成人精品一区二区三区网站观看| 亚洲成av人综合在线观看| 一区二区三区精品| 亚洲蜜臀av乱码久久精品蜜桃| 久久久不卡影院| 欧美mv日韩mv国产网站| 欧美一区二区成人| 欧美精品精品一区| 欧美剧情电影在线观看完整版免费励志电影 | 99久久精品99国产精品| 国产大陆a不卡| 久久国产精品区| 老司机精品视频线观看86 | 中文字幕综合网| 国产精品美女久久久久高潮| 精品国产麻豆免费人成网站| 欧美精品在线观看一区二区| 欧美日韩成人综合天天影院| 欧美特级限制片免费在线观看| 色婷婷激情综合| 日本高清成人免费播放| 欧美色图12p| 337p亚洲精品色噜噜| 欧美日韩成人高清| 宅男噜噜噜66一区二区66| 欧美另类一区二区三区| 欧美一卡2卡3卡4卡| 欧美tk—视频vk| 欧美激情综合在线| 中文字幕在线不卡一区| 亚洲女同ⅹxx女同tv| 亚洲一级电影视频| 青青草成人在线观看| 欧美aaaaa成人免费观看视频| 日本成人在线电影网| 国产一区二区三区在线观看精品| 国产精品中文字幕一区二区三区| 成人亚洲一区二区一| 91成人网在线| 日韩亚洲欧美在线| 中文在线一区二区| 亚洲v中文字幕| 国产成人在线网站| 色综合中文字幕| 678五月天丁香亚洲综合网| 久久亚洲精品国产精品紫薇| 日本一区二区高清| 亚洲成a人v欧美综合天堂下载| 美腿丝袜亚洲一区| 99久久99久久精品免费看蜜桃| 欧美在线影院一区二区| 欧美mv日韩mv国产网站app| 中文字幕一区二区三区四区不卡| 亚洲影视在线播放| 国产激情91久久精品导航| 欧美影片第一页| 国产日韩精品一区二区三区在线| 亚洲一区二区三区免费视频| 日本中文字幕一区| 成人国产亚洲欧美成人综合网| 欧美视频一区二区三区在线观看| 日韩一区二区三区av| 国产精品灌醉下药二区| 奇米影视一区二区三区| 91九色02白丝porn| 久久久www免费人成精品| 亚洲一区二区成人在线观看| 国产精品白丝av| 欧美成人一区二区三区在线观看| 亚洲国产精品传媒在线观看| 午夜视频在线观看一区二区 | 国产成人午夜99999| 欧美精品v国产精品v日韩精品| 国产精品美女久久久久久久久| 美女视频网站黄色亚洲| 6080午夜不卡| 亚洲一区二区三区四区的| 成人午夜av电影| 精品国产乱码久久久久久牛牛| 午夜婷婷国产麻豆精品| 欧美无砖专区一中文字| 综合婷婷亚洲小说| av成人动漫在线观看| 国产欧美一区二区精品婷婷| 久久av中文字幕片| 欧美精品视频www在线观看 | 欧美在线啊v一区| 国产精品久久午夜夜伦鲁鲁| 日韩1区2区3区| 日韩一区二区三| 欧美一区二区三区在线视频| 亚洲一区二区在线免费观看视频| 成人91在线观看| 国产精品久久久久久亚洲伦| 国产精品乡下勾搭老头1| 久久久91精品国产一区二区精品| 另类中文字幕网| 欧美一区二区三区系列电影| 日韩电影一区二区三区四区| 777午夜精品免费视频| 婷婷综合五月天| 欧美三级电影在线看| 五月天亚洲精品| 91精品国产综合久久小美女| 精品一区二区三区不卡| 国产日本欧美一区二区| 成人国产在线观看| 亚洲另类春色国产| 欧美区一区二区三区| 久久99热国产| 国产精品网站在线观看| 欧美日韩午夜精品| 国产一区二区不卡在线| 国产精品成人网| 欧美日韩国产高清一区| 狠狠色狠狠色综合| 日韩美女视频一区二区| 欧美一区二区三区影视| 成人性生交大片免费看在线播放| 亚洲女人小视频在线观看| 欧美日韩aaa| 国产精品18久久久久久久久| 一区在线中文字幕| 555夜色666亚洲国产免| 成人高清视频免费观看| 午夜精品一区二区三区免费视频 | 久久久午夜精品| 日本福利一区二区| 极品瑜伽女神91| 亚洲午夜一区二区| 国产清纯在线一区二区www| 欧美色男人天堂| 99麻豆久久久国产精品免费 | 日韩一区二区三| 色综合色综合色综合| 久久91精品国产91久久小草| 亚洲视频中文字幕| 久久综合久久99| 欧美在线free| www.亚洲精品| 美女网站色91| 一区二区成人在线| 国产亲近乱来精品视频| 日韩视频在线永久播放| 色婷婷久久久久swag精品| 久久99国产乱子伦精品免费| 亚洲欧美国产毛片在线| 久久在线免费观看| 欧美一级淫片007| 91久久香蕉国产日韩欧美9色| 粉嫩嫩av羞羞动漫久久久| 久久av资源网| 琪琪久久久久日韩精品| 亚洲午夜一区二区三区| 亚洲精品五月天| 亚洲免费色视频| 亚洲欧美影音先锋| 国产精品久久久久久久久免费丝袜| 日韩午夜激情电影| 制服丝袜中文字幕亚洲|