美文网首页GO
Go Json 操作

Go Json 操作

作者: 会长__ | 来源:发表于2019-03-13 14:03 被阅读2次

    js ajax请求时

    Json.stringify({field:value})
    
    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)
        }
    }
    

    相关文章

      网友评论

        本文标题:Go Json 操作

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