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

{
"resp": {
"respCode": "",
"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:“xxx” xxx则需要和json字串里的名字相符合: 如最外层的 json:"**resp**" 和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": "","respMsg": "成功","app": {"appId": "xxxxxx"}}}`
var JsonRes JsonResult
json.Unmarshal(body, &JsonRes)
fmt.Println("after parse", JsonRes)
}

golang 处理 json 结构体的更多相关文章

  1. 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct

    https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...

  2. golang 兼容不同json结构体解析实践

    线上服务器,同一个web接口有时需要兼容不同版本的结构体.这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理. 如下,http接口调用者会传入不同的json结构数据(单 ...

  3. golang 使用匿名结构体的问题

    golang允许使用匿名结构体,形如 type Test struct { param1 struct { param2 string } } 一般在使用的时候可以直接这样初始化 a := Test{ ...

  4. 六、golang中的结构体和方法、接口

    结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...

  5. Golang通脉之结构体

    Go语言中的基础数据类型可以表示一些事物的基本属性,但是要表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型, ...

  6. golang基础--strcut结构体

    结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法. // struct结构体,类似python语言中的clas ...

  7. Golang教程:结构体

    结构体(struct)是用户自定义的类型,它代表若干字段的集合.有些时候将多个数据看做一个整体要比单独使用这些数据更有意义,这种情况下就适合使用结构体. 比如将一个员工的 firstName, las ...

  8. golang中的结构体工厂

    1. main包 package main import ( "day01/utils" "fmt" ) //type File struct { // fd ...

  9. Golang 入门 : 结构体(struct)

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

随机推荐

  1. 运算符副作用总结与例子(js)

    js中运算符副作用总结与例子 js中赋值运算符,递增递减运算符,delete运算符具有副作用,简单地说就是前后表达式的值会相互影响,除此之外其它的js运算符都没有副作用. 但函数表达式和对象创建表达式 ...

  2. MQ报错2009/2085解决方法

    1.1. 响应2009错误 1.1.1.   涉及协议 MQ,调试回放阶段 1.1.2.   错误信息 完成码2原因为2009 1.1.3.   可能原因 远端MQ连接数不足,拒绝连接 1.1.4.  ...

  3. javascript中的对象拷贝

    js中的数据类型 在介绍javascript中的对象的拷贝之前,我先介绍一个基础的东西,javascript中的数据类型. 我们做前端的应该都知到在es6 之前,javascript中的数据类型Boo ...

  4. JavaScript实例:运动的小球

    本篇博文通过制作一个小球运动动画的实例,来学习在HTML5的画布上实现动画制作的方法,同时理解面向对象程序设计的基本思想. 1.绘制小球 先在HTML页面中设置一个画布. <canvas id= ...

  5. 在iframe 中视频可以正常播放,但是就是不能全屏。解决方法

    iframe标签加上webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="& ...

  6. C# 程序一个cmd命令窗口执行多条dos命令

    1,前几天的项目要用到程序执行dos命令去编译已生成的ice文件,后来去百度了好多都是只能执行一条命令 或者是分别执行几条命令,而我要的是一条dos命令在另一台命令的基础上执行.而不是分别执行. 后来 ...

  7. reports buileder 触发器的写法

    触发器写法: function CF_SHOULD_BACK_TIMEFormula return Number is--其他:取MES工时按工段分别统计产量.投入工时合计:应回报工时=移动数量*[∑ ...

  8. iOS字符串处理_替换(去掉空格换行)、截取

    以下代码主要实现了:1.截取"@@"前的字符串:  2.去掉字符串中的"##":  3.去掉字符串中的空格和换行. 希望相互学习相互指正. -----ViewC ...

  9. synchronized凭什么锁得住?

    相关链接: <synchronized锁住的是谁?> 我们知道synchronized是重量级锁,我们知道synchronized锁住的是一个对象上的Monitor对象,我们也知道sync ...

  10. DialogHost 关闭对话框

    <Window x:Class="DialogHost.ClosingConfirmation.CodeBehind.MainWindow" xmlns="http ...