• 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)
        }
    }

     from:http://my.oschina.net/golang/blog/210012

  • 相关阅读:
    古老当时兴
    购买代购的产品算违法吗——看空姐代购被判刑有感
    七种方法让你的网站在搜索结果中突围而出(中)
    amf webgame
    游戏开发协议(转)
    array的排序
    用 javascript + actionScript 解决透明的flash在firefox下滚轮失效的问题!(转)
    知乎摘 励志回答
    ie:stagewidth,stageheight的bug
    jsfl bug解决
  • 原文地址:https://www.cnblogs.com/sunshine-anycall/p/4800244.html
Copyright © 2020-2023  润新知