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
有疑问加站长微信联系(非本文作者)