首先 我们来看一下这个json 字串
{
"resp": {
"respcode": "000000",
"respmsg": "成功",
"app": {
"appid": "xxxxxx"
}
}
}
go 内置了json字串的解析包 "encoding/json"
接下来 就需要对结构体的定义了。
按照json库的分析,其实每一个花括号就是一个结构体
那么拆解的结构体如下:
//代表最里层的结构体
type appinfo struct {
appid string `json:"appid"`
}
//代表第二层的结构体
type response struct {
respcode string `json:"respcode"`
respmsg string `json:"respmsg"`
appinfo appinfo `json:"app"`
}
type jsonresult struct {
resp response `json:"resp"` //代表最外层花括号的结构体
}
结构体的命名必须遵循第一个字母大写,否则json库会忽略掉该成员,
json:"**resp**"
然后实际的代码解析如下
package main
import (
"fmt"
"encoding/json"
)
type appinfo struct {
appid string `json:"appid"`
}
type response struct {
respcode string `json:"respcode"`
respmsg string `json:"respmsg"`
appinfo appinfo `json:"app"`
}
type jsonresult struct {
resp response `json:"resp"`
}
func main() {
jsonstr := `{"resp": {"respcode": "000000","respmsg": "成功","app": {"appid": "xxxxxx"}}}`
var jsonres jsonresult
json.unmarshal(body, &jsonres)
fmt.println("after parse", jsonres)
}