
go语言string转结构体的实现

在 Go 语言中,可以使用标准库中的 encoding/json 包将 JSON 格式的字符串转换为结构体。
假设有以下 JSON 字符串:
{ "name": "鸡哥", "age": 28, "gender": "男", "hobby": { "sing": "唱", "jump": "跳", "rap": "rap", "ball":"篮球" } }
可以定义一个对应的结构体类型:
type hobby struct { Sing string `json:"sing"` Jump string `json:"jump"` Rap string `json:"rap"` Hobby hobby `json:"hobby"` } type Person struct { Name string `json:"name"` Age string `json:"age"` Gender string `json:"gender` Hobby hobby `json:"hobby"` }
然后使用 json.Unmarshal() 函数将 JSON 字符串解析为该结构体类型的实例:
package main import ( "encoding/json" "fmt" ) func main() { jsonStr := `{ "name": "鸡哥", "age": 28, "gender": "男", "hobby": { "sing": "唱", "jump": "跳", "rap": "rap", "ball":"篮球" } }` var person Person if err := json.Unmarshal([]byte(jsonStr), &person); err != nil { fmt.Println("解析 JSON 失败:", err) return } fmt.Printf("爱好:%s\n唱:%d\n跳:%s\n爱好:%v\n", person.Sing, person.Jump, person.Rap, person.Hobby) }
在这个例子中,我们将 JSON 字符串 jsonStr 解析为类型为 Person 的结构体实例 person。&person 表示将 person 的地址传递给 json.Unmarshal() 函数,让它将解析的结果填充到 person 中。如果解析失败,会返回一个非空的错误对象。
到此这篇关于go语言string转结构体的实现的文章就介绍到这了,更多相关go语言string转结构体内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Go结构体SliceHeader及StringHeader作用详解
目录 引言 SliceHeader 疑问 坑 StringHeader 0 拷贝转换 总结 引言 在 Go 语言中总是有一些看上去奇奇怪怪的东西,咋一眼一看感觉很熟悉,但又不理解其在 Go 代码中的实际意义,面试官却爱问... 今天要给大家介绍的是 SliceHeader 和 StringHeader 结构体,了解清楚他到底是什么,又有什么用,并且会在最后给大家介绍 0 拷贝转换的内容. 一起愉快地开始吸鱼之路. SliceHeader SliceHeader 如其名,Slice + Heade
-
浅谈Go语言中的结构体struct & 接口Interface & 反射
结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struct类型理解为类,可以定义方法,和函数定义有些许区别: struct类型是值类型. struct定义 type User struct { Name string Age int32 mess string } var user User var user1 *User = &User{} var user2 *User = new(User) struct使用 下面示例中user1和
-
go语言数组及结构体继承和初始化示例解析
目录 分类 数组 数组定义 结构体 结构体继承 结构体初始化 成员的操作 同名字段 其它匿名字段 非结构体类型 结构体指针类型 结构体字段实现接口 分类 类型 名称 长度 默认值 说明 pointer 指针 nil array 数组 0 slice 切片 nil 引⽤类型 map 字典 nil 引⽤类型 struct 结构体 数组 如果要存储班级里所有学生的数学成绩,应该怎样存储呢?可能有同学说,通过定义变量来存储.但是,问题是班级有80个学生,那么要定义80
-
Go语言学习之结构体和方法使用详解
目录 1. 结构体别名定义 2. 工厂模式 3. Tag 原信息 4. 匿名字段 5. 方法 1. 结构体别名定义 变量别名定义 package main import "fmt" type integer int func main() { //类型别名定义 var i integer = 1000 fmt.Printf("值: %d, 类型: %T\n", i, i) var j int = 100 j = int(i) //j和i不属于同一类型,需要转换 fm
-
Go语言学习函数+结构体+方法+接口
目录 1. 函数 1.1 函数返回值 同一种类型返回值 带变量名的返回值 函数中的参数传递 函数变量 1.2 匿名函数——没有函数名字的函数 在定义时调用匿名函数 将匿名函数赋值给变量 匿名函数用作回调函数 可变参数——参数数量不固定的函数形式 1.3 闭包 1.4 defer语句 处理运行时发生的错误 1.5 宕机恢复(recover)——防止程序崩溃 2. 结构体 2.1 定义与给结构体赋值 3. 方法 3.1 结构体方法 3.2 接收器 指针接收器 非指针类型接收器 4. 接口 4.1 声
-
C语言中的结构体在Python中实现转换
目录 struct介绍 struct中的常用接口 pack() unpack() fmt 示例 struct介绍 Python中提供了struct接口,用来处理类似C语言中的结构体. 处理的方式是将结构体表现位字符串,这个字符串其实就是结构体的一个个字节. struct中的常用接口 主要就是两个,pack()和unpack(). pack()就是将结构体转换成字符串(或者说字节序),unpack()则相反. pack() pack()函数的说明如下(来自Python 2.7.15 documen
-
C语言全面梳理结构体知识点
目录 一.什么是结构体 二.结构体的定义 三.结构体变量的定义 四.结构体变量的初始化 五.结构体变量的赋值 六.引用结构体变量中的成员 七.结构体变量的传参问题 八.传输地址带来的问题 九.动态结构体数组 十.关键字typedef 十一.C++中的引用 一.什么是结构体 为了更好地模拟现实,需要把各种基本数据类型组合在一起构成一种新的复合数据类型,我们把这种自定义的数据类型称为结构体.结构体是程序员根据实际需求,把各种基本数据类型组合在一起构成的一种新的复合数据类型. 二.结构体的定义 结构体
-
C语言示例讲解结构体的声明与初始化方法
目录 一.结构体声明的结构 1.直接声明 2.使用typedef声明一个新的类型 3.不完全声明 二.结构体初始化 1.声明(同时定义)时直接赋值 2.定义时直接赋值 3.定义后赋值 4.指定初始化 一.结构体声明的结构 1.直接声明 struct tag { member-list: member-list: member-list: ... } variable-list; tag 是结构体类型的标签. member-list 结构体的元素定义,比如 int i; 或者 float f,或者
-
Go语言里的结构体文法实例分析
本文实例讲述了Go语言里的结构体文法.分享给大家供大家参考.具体分析如下: 结构体文法表示通过结构体字段的值作为列表来新分配一个结构体. 使用 Name: 语法可以仅列出部分字段.(字段名的顺序无关.) 特殊的前缀 & 构造了指向结构体文法的指针. 复制代码 代码如下: package main import "fmt" type Vertex struct { X, Y int } var ( p = Vertex{1, 2} // has type Ver
-
Go语言指针访问结构体的方法
本文实例讲述了Go语言指针访问结构体的方法.分享给大家供大家参考.具体分析如下: Go有指针,但是没有指针运算. 结构体字段可以通过结构体指针来访问.通过指针间接的访问是透明的. 复制代码 代码如下: package main import "fmt" type Vertex struct { X int Y int } func main() { p := Vertex{1, 2} q := &p q.X = 1e9 fmt.P
-
C语言 structural body结构体详解用法
目录 结构体 结构体类型的声明 举个现实例子 程序实例 结构体成员的类型: 结构体变量的定义和初始化 程序一 结构体嵌套情况下,初始化和定义 结构体成员的访问 结构体传参 程序一: 程序二 结构体 结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量 结构体类型的声明 创建 结构体类型 没有占 内存空间,因为还 没有 创建变量 举个现实例子 盖房子 图纸 --------------------> 房子 结构体类型 结构体变量
随机推荐
- sql server2008数据库迁移的两种方法
- 风讯注入exp(hta版)代码发布
- win平台oracle rman备份和删除dg备库归档日志脚本
- 日期时间范围选择插件:daterangepicker使用总结(必看篇)
- AngularJS ng-table插件设置排序
- 关于javascript中的parseInt使用技巧
- vbscript ms owc 封裝代码
- 微信公众平台开发教程(六)获取个性二维码的实例
- asp.net 1.1/ 2.0 中快速实现单点登陆
- php轻松实现中英文混排字符串截取
- PHP实现的迷你漂流瓶
- 浅谈C# 类的继承
- javascript事件委托的用法及其好处简析
- JQuery移动页面开发之屏幕方向改变与滚屏的实现
- asp上传带显示的代码
- 五种 JSP页面跳转方法详解
- SQL server中字符串逗号分隔函数分享
- Linux系统信息查看常用命令
- 基于C中含有if的宏定义详解
- Android判断设备网络连接状态及判断连接方式的方法
其他
- pytorch 损失函数用cuda编写
- mixin调用父组件方法
- python绘制指数函数图像
- python dicom改为jpg
- 输入手机号时自动填充空格
- layui自适应表格高度
- 连续点击定时器 不能清空
- mybatis plus 自动生成表单校验
- Laravel 统计24小时内每小时的数据
- bootstrap vue 轮播
- OpenCV提取的直线比较稠密
- java学习面向抽象编程实战汽车租赁系统
- java Pattern.compile 匹配换行符
- mysql函数不识别汉字
- spring5里面函数式创建对象的好处是什么
- python统计中文的个数
- linux selenium 截图无法保存
- numpy怎么把array放进空的里面
- 怎么在spyder里输出表格
- idea 没有analyze 菜单