欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go處理JSON數(shù)據(jù)的實現(xiàn)

 更新時間:2023年02月17日 11:13:42   作者:Hejjon  
本文主要介紹了Go處理JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Go 處理 json數(shù)據(jù)主要就是使用 json 包下的 Marshal 和 UnMarshal 兩個函數(shù)。

定義結(jié)構(gòu)體 User

type User struct {
    Name    string   `json:"name"`
    Age     int      `json:"age"`
    Height  float64  `json:"height"`
    Hobbies []string `json:"hobbies"`
}

json 標簽定義的名稱就是轉(zhuǎn)json時的key

1. 結(jié)構(gòu)體對象轉(zhuǎn) JSON 字符串

u := User{"張三", 19, 180.0, []string{"籃球", "跑步"}}
bytes, _ := json.Marshal(u)        // Marshal函數(shù)轉(zhuǎn)成的是 byte 數(shù)組
jsonStr := string(bytes)        // 通過類型轉(zhuǎn)換將字節(jié)數(shù)組轉(zhuǎn)成json字符串
fmt.Println(jsonStr)

打印結(jié)果如下:

{"name":"張三","age":19,"height":180,"hobbies":["籃球","跑步"]}

2.  JSON 字符串轉(zhuǎn)結(jié)構(gòu)體對象

var u2 User        // 定義結(jié)構(gòu)體變量接收
jsonStr := `{"name":"張三","age":19,"height":180,"hobbies":["籃球","跑步"]}`
_ = json.Unmarshal([]byte(jsonStr), &u2)    // 相反地類型轉(zhuǎn)換將json字符串轉(zhuǎn)成字節(jié)數(shù)組后 再調(diào)用 json.Unmarshal 函數(shù)
fmt.Println(u2)

打印結(jié)果如下:

{張三 19 180 [籃球 跑步]}

3. 結(jié)構(gòu)體切片轉(zhuǎn)JSON字符串

和對象類型一樣,都是調(diào)用json包的 Marshal 方法

u1 := User{"張三", 19, 180.0, []string{"籃球", "跑步"}}
u2 := User{"李四", 18, 172.0, []string{"散步", "看書"}}
u3 := User{"王五", 20, 169.0, []string{"籃球", "爬山"}}
u4 := User{"趙六", 21, 158.0, []string{"乒乓球", "涉水"}}
 
// 定義切片
users := []User{u1, u2, u3, u4}
bytes, _ := json.Marshal(users)
jsonStr := string(bytes)
fmt.Println(jsonStr)

4. JSON字符串(JSON數(shù)組)轉(zhuǎn)切片

var users2 []User        // 定義結(jié)構(gòu)體切片
_ = json.Unmarshal([]byte(jsonStr), &users2)    // 將json數(shù)組(字符串)轉(zhuǎn)成結(jié)構(gòu)體切片
fmt.Println(users2)

參數(shù) jsonStr 就是3中轉(zhuǎn)成的json字符串

5. JSON 字符串轉(zhuǎn)Map,不需要定義結(jié)構(gòu)體

    jsonStr := `{"name": "zhangsan", "age": 19}`
    mp := make(map[string]interface{})
    _ = json.Unmarshal([]byte(jsonStr), &mp)
    fmt.Println(mp)
    fmt.Println(mp["name"]) // zhangsan
    
    // 遍歷map
    for k, v := range mp {
        fmt.Println(k, v)
    }

到此這篇關(guān)于Go處理JSON數(shù)據(jù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Go處理JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang 1.18新特性模糊測試用法詳解

    Golang 1.18新特性模糊測試用法詳解

    模糊測試是一種軟件測試技術(shù)。其核心思想是將自動或半自動生成的隨機數(shù)據(jù)輸入到一個程序中,并監(jiān)視程序異常,如崩潰,斷言失敗,以發(fā)現(xiàn)可能的程序錯誤,比如內(nèi)存泄漏,本文給大家介紹了Golang 1.18 新特性模糊測試,感興趣的同學(xué)可以參考閱讀下
    2023-05-05
  • 8個Elasticsearch高頻面試題和答案整理

    8個Elasticsearch高頻面試題和答案整理

    這篇文章為大家精選了8道Elasticsearch高頻面試題和答案,并且給出了這些知識點的應(yīng)用場景、也給出了解決這些問題的思路,希望對大家有所幫助
    2023-06-06
  • Go操作etcd的實現(xiàn)示例

    Go操作etcd的實現(xiàn)示例

    etcd是近幾年比較火熱的一個開源的、分布式的鍵值對數(shù)據(jù)存儲系統(tǒng),提供共享配置、服務(wù)的注冊和發(fā)現(xiàn),本文主要介紹etcd的安裝和使用,感興趣的可以了解一下
    2021-09-09
  • 詳解golang碎片整理之 fmt.Scan

    詳解golang碎片整理之 fmt.Scan

    本文介紹了從golang語言中fmt包從標準輸入獲取數(shù)據(jù)的Scan系列函數(shù)、從io.Reader中獲取數(shù)據(jù)的Fscan系列函數(shù)以及從字符串中獲取數(shù)據(jù)的Sscan系列函數(shù)的用法,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Go語言接口的用法詳解

    Go語言接口的用法詳解

    本文詳細講解了Go語言接口的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 解決Golang中g(shù)oroutine執(zhí)行速度的問題

    解決Golang中g(shù)oroutine執(zhí)行速度的問題

    這篇文章主要介紹了解決Golang中g(shù)oroutine執(zhí)行速度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang 探索對Goroutine的控制方法(詳解)

    Golang 探索對Goroutine的控制方法(詳解)

    下面小編就為大家分享一篇Golang 探索對Goroutine的控制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Go語言實現(xiàn)簡單留言板的方法

    Go語言實現(xiàn)簡單留言板的方法

    這篇文章主要介紹了Go語言實現(xiàn)簡單留言板的方法,涉及數(shù)據(jù)庫、模板頁面元素等留言板相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 詳解Go程序添加遠程調(diào)用tcpdump功能

    詳解Go程序添加遠程調(diào)用tcpdump功能

    這篇文章主要介紹了go程序添加遠程調(diào)用tcpdump功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Golang使用bcrypt實現(xiàn)密碼加密和校驗的操作代碼

    Golang使用bcrypt實現(xiàn)密碼加密和校驗的操作代碼

    bcrypt可以用于數(shù)據(jù)庫中的用戶密碼保存,相比md5而言更加的安全可靠,這篇文章主要介紹了Golang使用bcrypt實現(xiàn)密碼加密和校驗的操作代碼,需要的朋友可以參考下
    2024-05-05

最新評論