<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## **json 基本介紹** ### **json 的序列化** 這里我們介紹一下結構體、map 和切片的序列化,其它數據類型的序列化類似。 ``` package main import ( "fmt" "encoding/json" ) //定義一個結構體 type Monster struct { Name string Age int Birthday string Sal float64 Skill string } func testStruct() { //演示 monster := Monster{ Name :"牛魔王", Age : 500, Birthday : "2011-11-11", Sal : 8000.0, Skill : "牛魔拳", } //將 monster 序列化 data, err := json.Marshal(&monster) if err != nil { fmt.Printf("序列號錯誤 err=%v\n", err) } //輸出序列化后的結果 fmt.Printf("monster 序列化后=%v\n", string(data)) } //將 map 進行序列化 func testMap() { //定義一個 map var a map[string]interface{} //使用 map,需要 make a = make(map[string]interface{}) a["name"] = "紅孩兒" a["age"] = 30 a["address"] = "洪崖洞" //將 a 這個 map 進行序列化 //將 monster 序列化 data, err := json.Marshal(a) if err != nil { fmt.Printf("序列化錯誤 err=%v\n", err) } //輸出序列化后的結果 fmt.Printf("a map 序列化后=%v\n", string(data)) } //演示對切片進行序列化, 我們這個切片 \[\]map\[string\]interface{} func testSlice() { var slice []map[string]interface{} var m1 map[string]interface{} //使用 map 前,需要先 make m1 = make(map[string]interface{}) m1["name"] = "jack" m1["age"] = "7" m1["address"] = "北京" slice = append(slice, m1) var m2 map[string]interface{} //使用 map 前,需要先 make m2 = make(map[string]interface{}) m2["name"] = "tom" m2["age"] = "20" m2["address"] = [2]string{"墨西哥","夏威夷"} slice = append(slice, m2) //將切片進行序列化操作 data, err := json.Marshal(slice) if err != nil { fmt.Printf("序列化錯誤 err=%v\\n", err) } //輸出序列化后的結果 fmt.Printf("slice 序列化后\=%v\\n", string(data)) } //對基本數據類型序列化,對基本數據類型進行序列化意義不大 func testFloat64() { var num1 float64 = 2345.67 //對 num1 進行序列化 data, err := json.Marshal(num1) if err != nil { fmt.Printf("序列化錯誤 err=%v\\n", err) } //輸出序列化后的結果 fmt.Printf("num1 序列化后\=%v\\n", string(data)) } func main() { //演示將結構體, map , 切片進行序列號 testStruct() testMap() testSlice()//演示對切片的序列化 testFloat64()//演示對基本數據類型的序列化 } ``` 對于結構體的序列化,如果我們希望序列化后的 key的名字,又我們自己重新制定,那么可以給struct指定一個 tag 標簽. ![](https://i.vgy.me/3XFRCd.png) ### **json 的反序列化** ``` package main import ( "fmt" "encoding/json" ) //定義一個結構體 type Monster struct { Name string Age int Birthday string //.... Sal float64 Skill string } //演示將 json 字符串,反序列化成 struct func unmarshalStruct() { //說明 str 在項目開發中,是通過網絡傳輸獲取到.. 或者是讀取文件獲取到 str := "{\\"Name\\":\\"牛魔王\\",\\"Age\\":500,\\"Birthday\\":\\"2011-11-11\\",\\"Sal\\":8000,\\"Skill\\":\\"牛魔拳\\"}" //定義一個 Monster 實例 var monster Monster尚硅谷 Go 語言課程 更多 Java –大數據 –前端 –python 人工智能 \-區塊鏈資料下載,可訪問百度:尚硅谷官網 第 388頁 err := json.Unmarshal(\[\]byte(str), &monster) if err != nil { fmt.Printf("unmarshal err=%v\\n", err) } fmt.Printf("反序列化后 monster=%v monster.Name=%v \\n", monster, monster.Name) } //演示將 json 字符串,反序列化成 map func unmarshalMap() { str := "{\\"address\\":\\"洪崖洞\\",\\"age\\":30,\\"name\\":\\"紅孩兒\\"}" //定義一個 map var a map\[string\]interface{} //反序列化 //注意:反序列化 map,不需要 make,因為 make 操作被封裝到 Unmarshal 函數 err := json.Unmarshal(\[\]byte(str), &a) if err != nil { fmt.Printf("unmarshal err=%v\\n", err) } fmt.Printf("反序列化后 a=%v\\n", a) }尚硅谷 Go 語言課程 更多 Java –大數據 –前端 –python 人工智能 \-區塊鏈資料下載,可訪問百度:尚硅谷官網 第 389頁 //演示將 json 字符串,反序列化成切片 func unmarshalSlice() { str := "\[{\\"address\\":\\"北京\\",\\"age\\":\\"7\\",\\"name\\":\\"jack\\"}," + "{\\"address\\":\[\\"墨西哥\\",\\"夏威夷\\"\],\\"age\\":\\"20\\",\\"name\\":\\"tom\\"}\]" //定義一個 slice var slice \[\]map\[string\]interface{} //反序列化,不需要 make,因為 make 操作被封裝到 Unmarshal 函數 err := json.Unmarshal(\[\]byte(str), &slice) if err != nil { fmt.Printf("unmarshal err=%v\\n", err) } fmt.Printf("反序列化后 slice=%v\\n", slice) } func main() { unmarshalStruct() unmarshalMap() unmarshalSlice() } ``` 1) 在反序列化一個json 字符串時,要確保反序列化后的數據類型和原來序列化前的數據類型一致。 2) 如果 json 字符串是通過程序獲取到的,則不需要再對 “ 轉義處理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看