美文网首页
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