zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Objective-C 和 Swift 第三方库使用
    如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码?
    swift之水纹动画
    HandyJSON.Metadata.Class Xcode10.2, swift5.0 报错 linker command failed with exit code 1
    Python开发【第十篇】:CSS (二)
    Python开发【第十篇】:CSS --无内容点击-不进去(一)
    Python开发【第九篇】:HTML (二)
    Python开发【第九篇】:HTML --无内容点击-不进去(一)
    Python开发【第八篇】:网络编程
    Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)
  • 原文地址:https://www.cnblogs.com/sunshine-anycall/p/4800244.html
Copyright © 2011-2022 走看看