成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

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

我們在對外提供API接口,返回響應(yīng)的時候,很多時候需要使用如下的數(shù)據(jù)結(jié)構(gòu)

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

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

在實(shí)際的開發(fā)過程中我們可能會得到一個實(shí)際的數(shù)據(jù)值,并將這個值賦值給data,然后json序列化返回給調(diào)用方。

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

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

我們會發(fā)現(xiàn)之前已經(jīng)序列化好的字符串,每一個都多了,這是因?yàn)檗D(zhuǎn)義引起的問題。

解決方法

直接將未序列化的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 將轉(zhuǎn)義后的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)函數(shù)將其轉(zhuǎn)換一下,這樣也能保證不存在轉(zhuǎn)義符。

補(bǔ)充:golang string轉(zhuǎn)json的一些坑

先帶來點(diǎn)冷知識,不知道大家知不知道,反正我剛知道...

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

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

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

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

進(jìn)入正題

先看一段代碼,起作用是把字符串轉(zhuǎn)換為結(jié)構(gòu)體對應(yīng)的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) }}

仔細(xì)看看,有沒有錯?我只能說,這樣是輸出不出來答案的,賦值錯誤,看下面的運(yùn)行結(jié)果:

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

傷腦筋啊,我仔細(xì)看了半天,發(fā)現(xiàn)在定義的people和student兩個結(jié)構(gòu)體下邊有綠色的波浪線(我用的vscode),像下邊這樣:

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

鼠標(biāo)放上去顯示的是:

解決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) }}

輸出的結(jié)果這樣:

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

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

標(biāo)簽: JavaScript
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美精品粉嫩高潮一区二区| 国产欧美日韩一区| 亚洲欧洲视频| 国产精品天美传媒| 91香蕉视频mp4| 日韩免费性生活视频播放| 国产一区欧美日韩| 欧美精选午夜久久久乱码6080| 亚洲一区二区视频在线| 一本色道久久综合亚洲精品婷婷| 亚洲日本va午夜在线电影| 欧美日韩系列| 欧美韩国日本不卡| 很黄很黄激情成人| 亚洲三级视频在线观看| 亚洲精品美女91| 一区二区三区日韩欧美| 一本久道综合久久精品| 一区二区三区四区高清精品免费观看 | 亚洲一区国产| 亚洲欧美日韩中文播放| 在线亚洲免费| 亚洲123区在线观看| 日本黄色一区二区| 激情五月婷婷综合| 日韩亚洲欧美在线| 99久久精品免费| 国产欧美精品日韩区二区麻豆天美| 欧美91大片| 国产精品久线观看视频| 亚洲免费高清| 亚洲va欧美va天堂v国产综合| 久久国产毛片| 精品午夜一区二区三区在线观看 | 亚洲视频图片小说| 一本色道88久久加勒比精品| 一区二区三区在线视频免费| 欧美专区在线| 久久精品久久精品| 日韩一级片网址| 91麻豆国产精品久久| 亚洲欧美日韩久久| 老司机精品久久| 国产激情精品久久久第一区二区| 精品久久久网站| 亚洲大片av| 日韩电影一二三区| 日韩精品在线一区| 黑人巨大精品欧美一区二区小视频| 亚洲一区中文在线| 欧美丝袜自拍制服另类| 成人免费的视频| 自拍偷拍国产亚洲| 在线观看免费亚洲| kk眼镜猥琐国模调教系列一区二区 | 欧美fxxxxxx另类| 亚洲激情一二三区| 日本乱码高清不卡字幕| 国产成人在线观看免费网站| 国产清纯白嫩初高生在线观看91 | 亚洲精选国产| 日本视频免费一区| 日韩精品专区在线影院观看| 欧美性大战久久久久| 亚洲一区视频在线观看视频| 欧美日韩一区不卡| 91在线精品一区二区| 亚洲欧美激情视频在线观看一区二区三区| 日本高清视频一区二区| 成人精品国产免费网站| 亚洲特级片在线| 欧美日韩一区二区三区高清 | 欧美激情综合五月色丁香| 国产精品毛片在线看| 国产伦精品一区二区三区免费| 国产欧美日韩卡一| 日本丰满少妇一区二区三区| 99久久免费精品| 亚洲在线成人精品| 777色狠狠一区二区三区| 国产综合精品| 麻豆freexxxx性91精品| 久久久久久久久岛国免费| 免费久久99精品国产自| 丁香五精品蜜臀久久久久99网站| 亚洲色图一区二区| 欧美群妇大交群中文字幕| 海角社区69精品视频| 麻豆一区二区三| 国产精品日韩成人| 欧美三级日韩三级国产三级| 欧美日韩三区四区| 极品少妇xxxx偷拍精品少妇| 国产日本一区二区| 欧洲精品在线观看| 国产精品啊啊啊| 国产精品综合一区二区| 一区二区三区蜜桃| 久久人人爽人人爽| 欧美亚洲动漫精品| 亚洲激情一区二区| 成人免费观看av| 无码av中文一区二区三区桃花岛| 久久久久国产精品免费免费搜索| 欧美一a一片一级一片| 在线欧美亚洲| 成人久久18免费网站麻豆 | 亚洲中国最大av网站| 欧美大片拔萝卜| 可以看av的网站久久看| 欧美二区在线| 国产一区二区在线视频| 亚洲在线免费播放| 国产区在线观看成人精品| 欧美亚洲国产一区二区三区 | 欧美成人一区二区| 久久亚洲美女| 激情欧美一区二区三区| 懂色中文一区二区在线播放| 亚洲成人777| 中文字幕亚洲不卡| 精品国产一二三| 欧美午夜电影在线播放| 中国成人亚色综合网站| 色综合天天天天做夜夜夜夜做| 精品亚洲国内自在自线福利| 亚洲成在线观看| 亚洲视频每日更新| 久久久国际精品| 日韩视频在线一区二区| 欧美色图天堂网| 六月丁香综合| 亚洲高清在线播放| 91色婷婷久久久久合中文| 久久国产成人午夜av影院| 一区二区三区日韩精品| 国产女主播在线一区二区| 日韩视频在线一区二区| 欧美日韩大陆一区二区| 91福利精品第一导航| 国产精品一区二区a| 亚洲性视频h| 欧美激情日韩| 99久久综合国产精品| 国产精品资源在线| 麻豆91在线观看| 青青草国产精品97视觉盛宴| 亚洲一区在线电影| 亚洲欧美日韩国产另类专区| 久久久久久久性| 日韩欧美在线影院| 欧美精品久久99久久在免费线 | 国产精品日韩欧美一区二区三区| 国产精品美女久久久久久久久 | 麻豆中文一区二区| 一区二区三区国产在线| 亚洲综合一二区| 国产主播一区二区三区| 欧美性色欧美a在线播放| 91色porny| 久久久久久99精品| 国产日韩欧美一区在线| 久久国产夜色精品鲁鲁99| 一区二区黄色| 亚洲综合网站在线观看| 国产精品色噜噜| 中文字幕精品在线不卡| 久久久不卡网国产精品二区| 精品国产第一区二区三区观看体验| 欧美一区二区三区在线观看视频| 在线欧美日韩国产| 在线影院国内精品| 欧美又粗又大又爽| 欧美日韩国产成人在线免费| 欧美日本国产视频| 日韩一区二区免费视频| 欧美大片在线观看| 精品久久久久久久久久久久久久久 | 欧美α欧美αv大片| 欧美tk—视频vk| 久久综合久久综合亚洲| 久久精品夜色噜噜亚洲aⅴ| 久久精品亚洲麻豆av一区二区 | 国产一区二区三区观看| 国产a视频精品免费观看| 成人91在线观看| 欧美成人69| 极品av少妇一区二区| 国产日韩欧美一区| 一本到不卡免费一区二区| 欧美色中文字幕| 日韩欧美www| 国产午夜亚洲精品午夜鲁丝片 | 91免费视频大全| 红桃视频亚洲| 国产精品一页| 欧美中文一区二区三区| 日韩亚洲欧美高清| 久久精品欧美一区二区三区麻豆| 中文字幕国产精品一区二区|