golang 字符串 json互换

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)

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容