美文网首页
golang 字符串 json互换

golang 字符串 json互换

作者: jaydenZou1228 | 来源:发表于2019-04-17 14:58 被阅读0次

    package main

    import (

        "encoding/json"

        "fmt"

        "os"

    )

    type ConfigStruct struct {

        Host              string  `json:"host"`

        Port              int      `json:"port"`

        AnalyticsFile    string  `json:"analytics_file"`

        StaticFileVersion int      `json:"static_file_version"`

        StaticDir        string  `json:"static_dir"`

        TemplatesDir      string  `json:"templates_dir"`

        SerTcpSocketHost  string  `json:"serTcpSocketHost"`

        SerTcpSocketPort  int      `json:"serTcpSocketPort"`

        Fruits            []string `json:"fruits"`

    }

    type Other struct {

        SerTcpSocketHost string  `json:"serTcpSocketHost"`

        SerTcpSocketPort int      `json:"serTcpSocketPort"`

        Fruits          []string `json:"fruits"`

    }

    func main() {

        jsonStr := `{"host": "http://localhost:9090","port": 9090,"analytics_file": "","static_file_version": 1,"static_dir": "E:/Project/goTest/src/","templates_dir": "E:/Project/goTest/src/templates/","serTcpSocketHost": ":12340","serTcpSocketPort": 12340,"fruits": ["apple", "peach"]}`

        //json str 转map

        var dat map[string]interface{}

        if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil {

            fmt.Println("==============json str 转map=======================")

            fmt.Println(dat)

            fmt.Println(dat["host"])

        }

        //json str 转struct

        var config ConfigStruct

        if err := json.Unmarshal([]byte(jsonStr), &config); err == nil {

            fmt.Println("================json str 转struct==")

            fmt.Println(config)

            fmt.Println(config.Host)

        }

        //json str 转struct(部份字段)

        var part Other

        if err := json.Unmarshal([]byte(jsonStr), &part); err == nil {

            fmt.Println("================json str 转struct==")

            fmt.Println(part)

            fmt.Println(part.SerTcpSocketPort)

        }

        //struct 到json str

        if b, err := json.Marshal(config); err == nil {

            fmt.Println("================struct 到json str==")

            fmt.Println(string(b))

        }

        //map 到json str

        fmt.Println("================map 到json str=====================")

        enc := json.NewEncoder(os.Stdout)

        enc.Encode(dat)

        //array 到 json str

        arr := []string{"hello", "apple", "python", "golang", "base", "peach", "pear"}

        lang, err := json.Marshal(arr)

        if err == nil {

            fmt.Println("================array 到 json str==")

            fmt.Println(string(lang))

        }

        //json 到 []string

        var wo []string

        if err := json.Unmarshal(lang, &wo); err == nil {

            fmt.Println("================json 到 []string==")

            fmt.Println(wo)

        }

    }

    相关文章

      网友评论

          本文标题:golang 字符串 json互换

          本文链接:https://www.haomeiwen.com/subject/nfrnwqtx.html