1. 程式人生 > >golang 呼叫第三方api 例項(返回json並解析)

golang 呼叫第三方api 例項(返回json並解析)

解析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"` } type Object []interface{} 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"]}`
jsonStr = `{"accessToken":"507b5e08ee444dck887b66bd08672905", "clientToken":"64e3a5415bfe405d9485f1jf2ea5c68e", "selectedProfile":{"id":"selID","name":"Bluek404"}, "availableProfiles":[{"id":"測試ava","name":"Bluek404"}]}` //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) mapTmp := dat["selectedProfile"].(map[string]interface {}) fmt.Println(mapTmp["id"]) /* var dat2 map[string]interface{} if err := json.Unmarshal([]byte(jsonStr), &dat2); err == nil { fmt.Println( dat2["firstName"]) } */ mapTmp2 := (dat["availableProfiles"].([]interface {}))[0].(map[string]interface {}) //mapTmp3 := mapTmp2[0].(map[string]interface {}) fmt.Println(mapTmp2["id"]) } //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) } }

轉自:https://cloud.tencent.com/developer/article/1067772
原文釋出於微信公眾號 - Golang語言社群(Golangweb)
原文發表時間:2016-04-20

Convert JSON in to a useful struct.

http://json2struct.mervine.net/

*幫助到的點個贊,歡迎評論