国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - golang 實現struct、json、map互相轉化

golang 實現struct、json、map互相轉化

2021-03-10 01:00小拳頭 Golang

這篇文章主要介紹了golang 實現struct、json、map互相轉化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、Json和struct互換

(1)Json轉struct例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
import (
    "fmt"
    "encoding/json"
)
 
type People struct {
    Name string `json:"name_title"`
    Age int `json:"age_size"`
}
 
func JsonToStructDemo(){
    jsonStr := `
    {
        "name_title": "jqw"
        "age_size":12
    }
    `
    var people People
    json.Unmarshal([]byte(jsonStr), &people)
    fmt.Println(people)
}
 
func main(){
    JsonToStructDemo()
}

輸出:

golang 實現struct、json、map互相轉化

注意json里面的key和struct里面的key要一致,struct中的key的首字母必須大寫,而json中大小寫都可以。

(2)struct轉json

在結構體中引入tag標簽,這樣匹配的時候json串對應的字段名需要與tag標簽中定義的字段名匹配,當然tag中定義的名稱不需要首字母大寫,且對應的json串中字段名仍然大小寫不敏感。此時,結構體中對應的字段名可以不用和匹配的一致,但是首字母必須大寫,只有大寫才是可對外提供訪問的。

例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main
import (
    "fmt"
    "encoding/json"
)
 
type People struct {
    Name string `json:"name_title"`
    Age int `json:"age_size"`
}
 
func StructToJsonDemo(){
    p := People{
        Name: "jqw",
        Age: 18,
    }
 
    jsonBytes, err := json.Marshal(p)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(jsonBytes))
}
 
func main(){
    StructToJsonDemo()
}

輸出:

golang 實現struct、json、map互相轉化

二、json和map互轉

(1)json轉map例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
func JsonToMapDemo(){
    jsonStr := `
    {
        "name": "jqw",
        "age": 18
    }
    `
    var mapResult map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &mapResult)
    if err != nil {
        fmt.Println("JsonToMapDemo err: ", err)
    }
    fmt.Println(mapResult)
}

輸出:

golang 實現struct、json、map互相轉化

(2)map轉Json例子

?
1
2
3
4
5
6
7
8
9
10
11
12
func MapToJsonDemo1(){
    mapInstances := []map[string]interface{}{}
    instance_1 := map[string]interface{}{"name": "John", "age": 10}
    instance_2 := map[string]interface{}{"name": "Alex", "age": 12}
    mapInstances = append(mapInstances, instance_1, instance_2)
    jsonStr, err := json.Marshal(mapInstances)
 
    if err != nil {
        fmt.Println("MapToJsonDemo err: ", err)
    }
    fmt.Println(string(jsonStr))
}

輸出:

golang 實現struct、json、map互相轉化

例2:

?
1
2
3
4
func MapToJsonDemo2(){
    b, _ := json.Marshal(map[string]int{"test":1, "try":2})
    fmt.Println(string(b))
}

輸出:

golang 實現struct、json、map互相轉化

三、map和struct互轉

(1)map轉struct

需要安裝一個第三方庫

在命令行中運行:

go get github.com/goinggo/mapstructure

例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
func MapToStructDemo(){
    mapInstance := make(map[string]interface{})
    mapInstance["Name"] = "jqw"
    mapInstance["Age"] = 18
 
    var people People
    err := mapstructure.Decode(mapInstance, &people)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(people)
}

輸出

golang 實現struct、json、map互相轉化

(2)struct轉map例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func StructToMapDemo(obj interface{}) map[string]interface{}{
    obj1 := reflect.TypeOf(obj)
    obj2 := reflect.ValueOf(obj)
 
    var data = make(map[string]interface{})
    for i := 0; i < obj1.NumField(); i++ {
        data[obj1.Field(i).Name] = obj2.Field(i).Interface()
    }
    return data
}
func TestStructToMap(){
    student := Student{10, "jqw", 18}
    data := StructToMapDemo(student)
    fmt.Println(data)
}

輸出:

golang 實現struct、json、map互相轉化

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

原文鏈接:https://blog.csdn.net/xiaoquantouer/article/details/80233177

延伸 · 閱讀

精彩推薦
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品久久99| 国产精品一卡 | 四虎久久 | 欧美日韩亚洲一区二区 | 国产一区a| 激情综合五月天 | 国产精品极品美女在线观看免费 | 激情一级| 欧美黄在线观看 | 91久久精品日日躁夜夜躁国产 | av手机在线播放 | 日韩综合网 | 九九热精品视频在线免费观看 | 日韩手机在线 | 黄色av大片在线观看 | 欧美高清一区 | 国产精品欧美久久久 | 韩国精品一区二区 | 国产在线一区二区三区 | 一区二区在线不卡 | 91社区在线观看 | 成av在线 | 久久99精品久久久久久国产越南 | 日韩成人免费在线 | 久久精彩视频 | 91精品国产综合久久香蕉最新版 | 亚洲欧美一区二区三区在线 | 91在线精品一区二区三区 | 超碰在线91| 超碰97中文 | 久久国产视频精品 | 日韩三级网| 午夜激情视频在线观看 | 日本视频中文字幕 | 在线一级视频 | 中文字幕在线视频一区 | a级在线免费观看 | 久久久久久久久久久久久九 | 国产在线一区二区三区 | 亚洲午夜精品 | www.99精品 |