日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

解決Golang json序列化字符串時多了的情況

瀏覽:193日期:2024-05-30 09:26:58

我們在對外提供API接口,返回響應的時候,很多時候需要使用如下的數據結構

type Response struct { Code int `json:'code'` Msg string `json:'msg'` Data interface{} `json:'data'`}

該API接口返回一個狀體碼,狀態信息,以及具體的值。但是具體的值可能根據各個接口的不同而不同。

在實際的開發過程中我們可能會得到一個實際的數據值,并將這個值賦值給data,然后json序列化返回給調用方。

這時如果你得到的data是一個經過json序列化之后的字符串,類似于{'Name':'happy'},然后再將這個字符串賦值給data,此時將response序列化得到的string,如下

{“code”:1,”msg”:”success”,”data”:”{”Name”:”Happy”}”}

我們會發現之前已經序列化好的字符串,每一個都多了,這是因為轉義引起的問題。

解決方法

直接將未序列化的data賦值給data

package mainimport ( 'encoding/json' 'fmt')type Response struct { Code int `json:'code'` Msg string `json:'msg'` Data interface{} `json:'data'`}type People struct { Name string}func main() { data := People{Name: 'happy'} response := &Response{ Code: 1, Msg: 'success', Data: data, } b, err := json.Marshal(&response) if err != nil { fmt.Println('err', err) } fmt.Println(string(b))}

使用json 的RawMessage 將轉義后的string,賦值給data

package mainimport ( 'encoding/json' 'fmt')type Response struct { Code int `json:'code'` Msg string `json:'msg'` Data interface{} `json:'data'`}type People struct { Name string}func main() { data := `{'Name':'Happy'}` response := &Response{ Code: 1, Msg: 'success', Data: json.RawMessage(data), } b, err := json.Marshal(&response) if err != nil { fmt.Println('err', err) } fmt.Println(string(b))}

通過使用json的json.RawMessage(data)函數將其轉換一下,這樣也能保證不存在轉義符。

補充:golang string轉json的一些坑

先帶來點冷知識,不知道大家知不知道,反正我剛知道...

大佬們都知道怎么在string中給string類型賦值帶雙引號的字符串,沒錯就是用反斜杠,如下:

msg := '{'name':'zhangsan', 'age':18, 'id':122463, 'sid':122464}'

但是golang還支持另外一個符號,我初學時候以為是單引號,但其實不是,是esc鍵下邊那個,那么賦值帶雙引號的字符串就如下就行了:

ret := `{'access_token':'uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m','expires_in':7200}`

進入正題

先看一段代碼,起作用是把字符串轉換為結構體對應的json

type people struct { name string `json:'name'` age int `json:'age'` id int `json:'id'`}type student struct { people id int `json:'sid'`}func main() { msg := '{'name':'zhangsan', 'age':18, 'id':122463, 'sid':122464}' var someOne student if err := json.Unmarshal([]byte(msg), &someOne); err == nil { fmt.Println(someOne) fmt.Println(someOne.people) } else { fmt.Println(err) }}

仔細看看,有沒有錯?我只能說,這樣是輸出不出來答案的,賦值錯誤,看下面的運行結果:

解決Golang json序列化字符串時多了的情況

傷腦筋啊,我仔細看了半天,發現在定義的people和student兩個結構體下邊有綠色的波浪線(我用的vscode),像下邊這樣:

解決Golang json序列化字符串時多了的情況

鼠標放上去顯示的是:

解決Golang json序列化字符串時多了的情況

大家都知道,golang中變量聲明成大寫和小寫能引用的范圍是不一樣的,那我就想了,大小寫問題???一臉懵逼把變量名首字母改成了大寫,然后...就行了,代碼變成了下邊這樣:

type people struct { Name string `json:'name'` Age int `json:'age'` ID int `json:'id'`}type student struct { people ID int `json:'sid'`}func main() { msg := '{'name':'zhangsan', 'age':18, 'id':122463, 'sid':122464}' var someOne student if err := json.Unmarshal([]byte(msg), &someOne); err == nil { fmt.Println(someOne) fmt.Println(someOne.people) } else { fmt.Println(err) }}

輸出的結果這樣:

解決Golang json序列化字符串時多了的情況

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲成人不卡| 美女少妇全过程你懂的久久| 精品在线播放| 亚洲福利国产| 麻豆国产91在线播放| 麻豆精品99| 日韩av免费大片| 成人免费网站www网站高清| 欧美片第1页| 欧美日韩在线播放视频| 在线日韩中文| 久久国产福利| 香蕉久久一区| 欧美国产不卡| 性欧美videohd高精| 亚洲网站视频| 亚洲丝袜美腿一区| 91精品国产自产精品男人的天堂| 欧美视频久久| 久久a爱视频| 国产精品原创| 美女久久久久| 亚洲精品美女| 老司机精品视频在线播放| 波多野结衣久久精品| 91精品国产调教在线观看| re久久精品视频| 亚洲精品欧洲| 国模精品一区| 五月天综合网站| 日韩影片在线观看| 麻豆91精品91久久久的内涵| 少妇久久久久| 免播放器亚洲一区| 欧美亚洲色图校园春色| 精品亚洲精品| 欧美日韩激情在线一区二区三区| 四虎精品永久免费| 久久精品国产久精国产爱| 群体交乱之放荡娇妻一区二区| 尹人成人综合网| 97久久亚洲| 成人久久久久| 亚洲一级大片| 中国字幕a在线看韩国电影| 欧美在线影院| 国产精品一区二区三区四区在线观看 | 亚洲午夜精品久久久久久app| 久久亚洲欧美| 精品欠久久久中文字幕加勒比| 亚洲午夜久久久久久尤物| 日本午夜精品视频在线观看| 日韩国产一区| 日本视频一区二区| 亚洲日本网址| 欧美亚洲福利| 蜜桃成人av| 国产高清日韩| 老鸭窝毛片一区二区三区| 精品亚洲免a| 日本欧美在线看| 精品一区电影| 亚洲精品少妇| 婷婷精品视频| 精品久久久久久久| 日韩影片在线观看| 亚洲一级特黄| 精品三级av| 亚洲18在线| 久久国产中文字幕| 国产日本精品| 国产美女一区| 日韩一区电影| 麻豆精品新av中文字幕| 亚洲三区欧美一区国产二区| 人在线成免费视频| 97久久精品| 亚洲免费播放| 一区二区三区四区日本视频| 久久黄色影视| 亚洲一区二区三区四区电影| 香蕉久久99| 岛国av免费在线观看| 久久精品超碰| 国产乱子精品一区二区在线观看 | 精品国产亚洲一区二区三区| 亚洲日本三级| 免费观看久久久4p| 亚洲精品综合| 亚洲精品福利| 97精品资源在线观看| 亚洲精品美女| 欧美一级一区| 国产精品久久久久久模特| 国产精品综合| 免费久久精品视频| 黑丝一区二区三区| 日本中文字幕视频一区| 在线亚洲成人| 精品三级久久久| 99久精品视频在线观看视频| 欧美aa在线视频| 亚洲一级影院| 亚洲国产日韩欧美在线| 视频一区二区三区在线| 国产91在线播放精品| 久久精品国语| 久久成人福利| 日韩电影免费网站| 国产欧美在线| 国产在线不卡一区二区三区| 九九九精品视频| 国产剧情一区二区在线观看| 国产精品久久久久蜜臀| 麻豆久久久久久| 欧美在线黄色| 日本不卡的三区四区五区| 日韩在线卡一卡二| 免费看黄色91| 免费美女久久99| 蜜臀av在线播放一区二区三区| 女同性一区二区三区人了人一| 久久精品高清| 日韩国产在线一| 另类专区亚洲| 欧美成人亚洲| 国产亚洲一区| 国产在线一区不卡| 7777精品| 日本a口亚洲| 国产剧情一区二区在线观看| 国产精品igao视频网网址不卡日韩| 国产精品一国产精品| 欧美精品一区二区三区精品| 日韩欧美精品| 亚洲开心激情| 精品国产亚洲一区二区三区大结局| 久久精品影视| 国产精品久久久久久av公交车| 最新中文字幕在线播放 | 欧美精品一区二区久久| 99视频在线精品国自产拍免费观看| 久久国产中文字幕| 亚洲综合日本| 久久国产三级| 国产va在线视频| 99久久99久久精品国产片果冰 | 国产日产一区| 精品国产亚洲日本| 日韩网站中文字幕| 午夜亚洲福利| 日韩精品中文字幕一区二区| 久久亚洲影院| 樱桃成人精品视频在线播放| 麻豆亚洲精品| 国产精品mm| 青青久久av| 免费成人在线观看| 国产福利亚洲| 久久视频精品| 午夜在线播放视频欧美| 亚洲精品乱码日韩| 蜜桃久久久久| 不卡在线一区二区| 日本va欧美va欧美va精品| 成人一二三区| 六月婷婷一区| 国产精品magnet| 香蕉视频亚洲一级| 日韩精品一区第一页| 欧美国产极品| aⅴ色国产欧美| 国产精品蜜月aⅴ在线| 成人午夜国产| 欧美一级二级视频| 久久精品导航| 日韩精品1区2区3区| 三上悠亚国产精品一区二区三区| 蜜臀av国产精品久久久久| 欧美欧美黄在线二区| 日韩精品dvd| 中文字幕一区二区av| 98精品久久久久久久| 久久大逼视频| 国产一区二区三区四区五区传媒| 欧美天堂亚洲电影院在线观看| 日本91福利区| 免费毛片在线不卡| 国产香蕉精品| 欧美另类专区| 精品国产午夜肉伦伦影院 | 国产二区精品| 麻豆久久久久久久| 视频一区二区不卡| 日韩精品电影| 国产日产高清欧美一区二区三区 | 麻豆精品视频在线| 中文字幕一区二区av| 成人福利av| 国产精品中文字幕亚洲欧美|