Golang json转结构体

来源:互联网 发布:下个学粤语歌软件 编辑:程序博客网 时间:2024/06/07 18:19

json字串

首先 我们来看一下这个json 字串

{    "resp": {        "respCode": "000000",        "respMsg": "成功",        "app": {            "appId": "d12abd3da59d47e6bf13893ec43730b8"        }    }}

结构体拆解

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库会忽略掉该成员
这和Go的设计理念一致,结构体中首字母大写的成员,才可被其他对象问

而后面的json:“xxx” xxx则需要和json字串里的名字相符合:
如最外层的 json:”resp” 和json字符串里的“resp”一致

测试

实际的代码解析如下

package mainimport (    "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": "d12abd3da59d47e6bf13893ec43730b8"}}}`    var JsonRes JsonResult     json.Unmarshal(body, &JsonRes)    fmt.Println("after parse", JsonRes)}
原创粉丝点击