国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

golang中json和struct的使用說明

瀏覽:133日期:2024-05-29 13:00:22
1、返回json響應(yīng)結(jié)果

在struct的字段后面加入json:'key'可以進(jìn)行json格式輸出,其中key為json的鍵名

type SuccessResponse struct { Code int `json:'code'` Msg string `json:'msg'` Data interface{} `json:'data'`}func SuccessRsp(ctx *gin.Context, data interface{}) { res := SuccessResponse{ Code: 0, Msg: 'success', Data: data, } ctx.JSON(http.StatusOK, res)}type MyData struct { Id int `json:'id'` Name string `json:'name'`}func ListAllOncallPlan(ctx *gin.Context) { //你的業(yè)務(wù)代碼 //...... data = Mydata{Id:1, Name:'zhangsan'} SuccessRsp(ctx, plans)}響應(yīng)的結(jié)果為:{ 'code': 0, 'msg': 'ok', 'data': { 'id': 1, 'name': 'zhangsan' }}tips:

1.如果struct的某個(gè)字段沒有傳值,則輸出的json為默認(rèn)值,可以通過'omitempty'參數(shù)忽略掉值為空的鍵

type MyData struct { Id int `json:'id,omitempty'` Name string `json:'name'`}data = Mydata{Name:'zhangsan'}SuccessRsp(ctx, plans)

則id的鍵會(huì)被忽略掉,輸出json為:

{ 'code': 0, 'msg': 'ok', 'data': { 'name': 'zhangsan' }}

2.可以用'-'來完全掉忽略掉某個(gè)鍵, 比如下面的id不會(huì)被轉(zhuǎn)化到j(luò)son字段中

type MyData struct { Id int `json:'-'` Name string `json:'name'`}2、將數(shù)據(jù)庫(kù)的字段轉(zhuǎn)化成struct

如果使用gorm框架進(jìn)行數(shù)據(jù)庫(kù)連接,則可以用gorm:'column:key'來指定數(shù)據(jù)庫(kù)的鍵,如下所示

type User struct { Id int64 `gorm:'column:id' json:'id'` Namestring `gorm:'column:name' json:'name,omitempty'`}

補(bǔ)充:golang 一鍵生成 form,json,gorm標(biāo)簽

每次有新表產(chǎn)生時(shí),就會(huì)有新的model,model編寫完后,繁雜的標(biāo)簽注解令人煩躁,所以寫了這樣的工具。

func AddJsonFormGormTag(in string) (string) {var result stringscanner := bufio.NewScanner(strings.NewReader(in))var oldLineTmp = ''var lineTmp = ''var propertyTmp = ''var seperateArr []stringfor scanner.Scan() {oldLineTmp = scanner.Text()lineTmp = strings.Trim(scanner.Text(), ' ')if strings.Contains(lineTmp, '{') || strings.Contains(lineTmp, '}') {result = result + oldLineTmp + 'n'continue}seperateArr = Split(lineTmp, ' ')// 接口或者父類聲明不參與tag, 自帶tag不參與tagif len(seperateArr) == 1 || len(seperateArr) == 3 {continue}propertyTmp = HumpToUnderLine(seperateArr[0])oldLineTmp = oldLineTmp + fmt.Sprintf(' `gorm:'column:%s' json:'%s' form:'%s'`', propertyTmp, propertyTmp, propertyTmp)result = result + oldLineTmp + 'n'}return result}// 增強(qiáng)型split,對(duì) a,,,,,,,b,,c 以','進(jìn)行切割成[a,b,c]func Split(s string, sub string) []string {var rs = make([]string, 0, 20)tmp := ''Split2(s, sub, &tmp, &rs)return rs}// 附屬于Split,可獨(dú)立使用func Split2(s string, sub string, tmp *string, rs *[]string) {s = strings.Trim(s, sub)if !strings.Contains(s, sub) {*tmp = s*rs = append(*rs, *tmp)return}for i, _ := range s {if string(s[i]) == sub {*tmp = s[:i]*rs = append(*rs, *tmp)s = s[i+1:]Split2(s, sub, tmp, rs)return}}}// 駝峰轉(zhuǎn)下劃線func HumpToUnderLine(s string) string{if s =='ID' {return 'id'}var rs stringelements:=FindUpperElement(s)for _,e :=range elements{s =strings.Replace(s, e, '_'+strings.ToLower(e),-1)}rs = strings.Trim(s,' ')rs = strings.Trim(rs,'t')return strings.Trim(rs,'_')}// 找到字符串中大寫字母的列表,附屬于HumpToUnderLinefunc FindUpperElement(s string) []string {var rs = make([]string, 0, 10)for i := range s {if s[i] >= 65 && s[i] <= 90 {rs = append(rs, string(s[i]))}}return rs}如何使用

func TestAddJsonFormTag(t *testing.T) { rs := AddJsonFormGormTag(` type User struct{ Iduint64 NameSpace string DailyRoutine int } `) fmt.Println(rs)}結(jié)果

type User struct{ Iduint64 `gorm:'column:id' json:'id' form:'id'` NameSpace string `gorm:'column:name_space' json:'name_space' form:'name_space'` DailyRoutine int `gorm:'column:daily_routine' json:'daily_routine' form:'daily_routine'` }

具體對(duì)齊,使用go fmt xxx.go 命令

goland 快捷鍵是 ctrl alt L

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美自拍视频 | 日韩视频在线观看一区 | 男人的天堂亚洲 | 久久精品国产精品亚洲20 | 婷婷的久久五月综合先锋影音 | 欧洲一级鲁丝片免费 | 亚洲第一页视频 | 色欧美hdvideosxs4k | 日本xxxxx黄区免费看动漫 | 亚洲mm8成为人影院 亚洲m男在线中文字幕 | 美女视频黄a视频免费全程 美女视频黄a视频免费全过程 | 成人在线观看国产 | 一及 片日本 | 亚洲天天在线 | 久久国产精品影院 | 男人天堂新地址 | 亚洲一区区 | 亚洲精品tv久久久久 | 成人黄色毛片 | 亚洲免费毛片 | 九九精品视频在线播放 | 国内成人精品视频 | 成人午夜性a一级毛片美女 成人午夜亚洲影视在线观看 | 国产成人18黄网站免费 | 欧美一级视 | 欧美成人免费公开播放 | 亚洲三级网站 | 国产亚洲精品久久综合影院 | 久久亚洲国产欧洲精品一 | 国产一及片 | 欧美xx一片 | 国产精品特级毛片一区二区三区 | 理论片黄色 | 久久精品国产400部免费看 | 狠狠色狠狠色综合久久第一次 | 欧美性精品hd在线观看 | a一级免费 | 亚洲国产资源 | 伊人狼人影院 | 欧美精品日本一级特黄 | 国产美女一区精品福利视频 |