



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第golang中使用匿名結構體的方法目錄轉化為map定義具名結構體定義匿名結構體在一些項目中,我們會使用json來將字符串轉為結構體,但是很多時候,這種結構體只會用一次,基本上只會用于反序列化,對于這種只用到一次的結構體,我們可以使用匿名結構體.在gin接收參數的時候會非常有用,如我們將要接收的json參數為
{
"opt":"left",
"phoneinfo":[
{"device_id":64,"sn":"192.168.110.65:5555"},
{"device_id":68,"sn":"192.168.110.164:5555"}
}
當我們嘗試使用json.Unmarshal()函數將json字符串轉為go中的數據結構時,我們可以有以下幾種方式
轉化為map
map結構需要定義key和value的類型,對于key好說,可以都定義為string,但是對于value,從上面的json結構可以看出,有字符串,也有整型,這種就不太好定義,誰知道未來會不會有新的類型,所以我們可以無腦的將json轉化為map[string]interface{}
import(
"encoding/json"
"fmt"
funcmain(){
str:=`{
"opt":"left",
"phoneinfo":[
{"device_id":64,"sn":"192.168.110.65:5555"},
{"device_id":68,"sn":"192.168.110.164:5555"}
varsmap[string]interface{}
json.Unmarshal([]byte(str),s)
fmt.Printf("%#v",s)
}
這種是可以轉換,但是如果要用到里面的數據就比較麻煩,需要將interface{}做類型轉換如要獲取到opt參數
opt:=s["opt"].(string)
fmt.Println(opt)
定義具名結構體
還有一種方式是定義一個結構體,用來接收參數如想要接收上面的json字符串,可以定義下面的結構體
packagemain
import(
"encoding/json"
"fmt"
typephoneinfostruct{
Device_idint`json:"device_id"`
Snstring`json:"sn"`
typeparamsstruct{
Optstring`json:"opt"`
Phoneinfo[]phoneinfo`json:"phoneinfo"`
funcmain(){
str:=`{
"opt":"left",
"phoneinfo":[
{"device_id":64,"sn":"192.168.110.65:5555"},
{"device_id":68,"sn":"192.168.110.164:5555"}
varsparams
json.Unmarshal([]byte(str),s)
fmt.Printf("%#v\n",s)
fmt.Println(s.Opt)//left
fmt.Println(s.Phoneinfo[0].Sn)//192.168.110.65:5555
}
定義匿名結構體
上面定義了兩個結構體,但是很明顯,這兩個結構體只在這里使用一次,別的地方是不會再用得到的,所以這時我們也可以使用匿名結構體
funcmain(){
str:=`{
"opt":"left",
"phoneinfo":[
{"device_id":64,"sn":"192.168.110.65:5555"},
{"device_id":68,"sn":"192.168.110.164:5555"}
varsstruct{
Optstring`json:"opt"`
Phoneinfo[]struct{
Device_idint`json:"device_id"`
Snstring`json:"sn"`
}`json:"phoneinfo"`
json.Unmarshal([]byte(str),s)
fmt.Printf("%#v\n",s)
fmt.Println(s.Opt)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年照護測試題庫與答案
- 2025年上海金山區屬國有企業招聘考試筆試試題1(含答案)
- 老年摔傷護理課件
- 老年急救護理課件
- 老年康復護理課件模板
- 老年人文護理課件
- 老干部工作政策課件
- 老師德育課件
- 出租車企業車輛運營維護勞動合同
- 銀行財務風險評估合同書63657
- 2025河南省豫地科技集團社會招聘169人筆試參考題庫附帶答案詳解析集合
- 【北京市人社局】2025年北京市人力資源市場薪酬數據報告(一季度)
- 2024年09月2024秋季中國工商銀行湖南分行校園招聘620人筆試歷年參考題庫附帶答案詳解
- 牧場物語-礦石鎮的伙伴們-完全攻略
- (高清版)TDT 1068-2022 國土空間生態保護修復工程實施方案編制規程
- 2016年煙葉加工、收購、調撥工作總結
- 《髓質海綿腎》課件.ppt
- 書法基礎知識第一課課件
- 共青團委員會選票模板
- 解剖型脛骨髓內釘
- 潮濕環境相關性皮炎ppt課件
評論
0/150
提交評論