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