zoukankan      html  css  js  c++  java
  • zz golang str json map互转

    https://segmentfault.com/q/1010000005025933/a-1020000005032034
    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)
        }
    }
     

  • 相关阅读:
    Educational Codeforces Round 6
    Codeforces Round #373 (Div. 2)
    尺取法
    Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)
    逆元(数论倒数)
    最大公约数gcd,最小公倍数lcm,扩展欧几里得
    hdu 6395 Sequence (分段矩阵快速幂)
    快速幂
    hdu 6432 Cyclic
    hdu 6397 charactor encoding
  • 原文地址:https://www.cnblogs.com/yeyong/p/11078153.html
Copyright © 2011-2022 走看看