package main import ( ) type ConfigStruct struct { Host ` Port ` AnalyticsFile ` StaticFileVersion ` StaticDir ` TemplatesDir ` SerTcpSocketHost ` SerTcpSocketPort ` Fruits []` } type Other struct { SerTcpSocketHost ` SerTcpSocketPort ` Fruits []` } func main() { jsonStr := `{: ,: : : : ,: ,: ,: : [, ]}` //json str 转map var dat map[string]interface{} if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil { fmt.Println() fmt.Println(dat) fmt.Println(dat[]) } //json str 转struct var config ConfigStruct if err := json.Unmarshal([]byte(jsonStr), &config); err == nil { fmt.Println() fmt.Println(config) fmt.Println(config.Host) } //json str 转struct(部份字段) var part Other if err := json.Unmarshal([]byte(jsonStr), &part); err == nil { fmt.Println() fmt.Println(part) fmt.Println(part.SerTcpSocketPort) } b, err := json.Marshal(config); err == nil { fmt.Println() fmt.Println(string(b)) } //map 到json str fmt.Println() enc := json.NewEncoder(os.Stdout) enc.Encode(dat) //array 到 json str arr := [], , , , , , } lang, err := json.Marshal(arr) if err == nil { fmt.Println() fmt.Println(string(lang)) } //json 到 []string var wo []string if err := json.Unmarshal(lang, &wo); err == nil { fmt.Println() fmt.Println(wo) } }