golang 处理 json 结构体
首先 我们来看一下这个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 结构体的更多相关文章
- 将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. ...
- golang 兼容不同json结构体解析实践
线上服务器,同一个web接口有时需要兼容不同版本的结构体.这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理. 如下,http接口调用者会传入不同的json结构数据(单 ...
- golang 使用匿名结构体的问题
golang允许使用匿名结构体,形如 type Test struct { param1 struct { param2 string } } 一般在使用的时候可以直接这样初始化 a := Test{ ...
- 六、golang中的结构体和方法、接口
结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...
- Golang通脉之结构体
Go语言中的基础数据类型可以表示一些事物的基本属性,但是要表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型, ...
- golang基础--strcut结构体
结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法. // struct结构体,类似python语言中的clas ...
- Golang教程:结构体
结构体(struct)是用户自定义的类型,它代表若干字段的集合.有些时候将多个数据看做一个整体要比单独使用这些数据更有意义,这种情况下就适合使用结构体. 比如将一个员工的 firstName, las ...
- golang中的结构体工厂
1. main包 package main import ( "day01/utils" "fmt" ) //type File struct { // fd ...
- Golang 入门 : 结构体(struct)
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
随机推荐
- Maven pom.xml 全配置(一)常用配置
Maven pom.xml 全配置(一)常用配置 这里贴出一个Maven中出现频率较高的配置参数注释,方便理解项目中Maven的配置具体的作用.如果在此博文中没有找到你想看到的参数,可以移步Maven ...
- python安装pymssql等包时出现microsoft visual c++ 14.0 is required问题无需下载visualcppbuildtools的解决办法
如题,在练习python安装一些包时,出现了microsoft visual c++ 14.0 is required问题.网上有很多资料:一是下载对应的.whl文件,然后pip install安装: ...
- vscode 同步扩展插件
第一步: 在 VSCode 中,安装用于同步配置的插件 settings sync 第二步:将 VSCode 配置上传到 GitHub 完成这一步需要 GitHub token 和 GitHu ...
- cesium计算当前地图范围extent以及近似当前层级zoom
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- Linux下MySQL或MariaDB忘记root密码的解决方法
1.vim /etc/my.cnf 2.在[mysqld]下添加一行skip-grant-tables,然后保存并退出. 3.重启mysql服务:service mysqld restart. 4.不 ...
- 一个经典的代码--Convert char to int in C and C++
前记 写程序,就像建房子,对于高超的建筑师来说,是要有一些好的素材的.作为一个程序员,见了好用的素材存起来,以备后面需要,也是一门很好的修养. 实例代码 一个char 转int的经典代码,这里分享一下 ...
- 使用Mybatis实现动态SQL(二)
使用Mybatis实现动态SQL 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 写在前面: *本章节适合有Mybatis基础者观看* 使用Mybatis实现动态SQL ...
- Android OkHttp + Retrofit 断点续传
本文链接 前面我们已经知道如何使用OkHttp+Retrofit下载文件. 下载文件时,可能会遇到一些意外情况,比如网络错误或是用户暂停了下载. 再次启动下载,如果又要从头开始,会白白浪费前面下载好的 ...
- LinqDB 查询数据库
LinqDB数据库查询数据,还是很方便的. 1. 添加Entity数据实体类 方便之后映射操作 /// <summary> /// 课件 /// </summary> [Dat ...
- 配置Postman通过OAuth 2 implicit grant获取Dynamics 365 CE Online实例的Access Token
微软动态CRM专家罗勇 ,回复335或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 对于测试Web API, Get 类型,不需要设定特别reque ...