r1笔记day25 json协议以及反序列化样例_err = json.unmarshal([]byte(data), ret1)_XieHZ同学的博客-CSDN博客


本站和网页 https://blog.csdn.net/qq_36133447/article/details/103813597 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

r1笔记day25 json协议以及反序列化样例_err = json.unmarshal([]byte(data), ret1)_XieHZ同学的博客-CSDN博客
r1笔记day25 json协议以及反序列化样例
XieHZ同学
于 2020-01-03 02:17:17 发布
481
收藏
分类专栏:
golang
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36133447/article/details/103813597
版权
golang
专栏收录该内容
37 篇文章
0 订阅
订阅专栏
分别对struct、slice、基本类型、map进行序列化和反序列化:
package main
import (
"encoding/json"
"fmt"
type User struct {
UserName string `json:"username"` //改变json打包的key,将大写变成小写
NickName string `json:"nickname"`
Age int `json:"age"`
Birthday string `json:"birthday"`
Sex string `json:"sex"`
Email string `json:"email"`
Phone string `json:"phone"`
//结构体进行序列化
func testStruct() (ret string, err error) {
user1 := &User{
UserName: "user1",
NickName: "shangke",
Age: 18,
Birthday: "2008/8/8",
Sex: "mael",
Email: "xiehzh@ffcs.cn",
Phone: "18950200000",
//fmt.Println("before marshal: ", user1)
data, err := json.Marshal(user1)
if err != nil {
err = fmt.Errorf("json.marshal failed,err:%v", err)
return
//fmt.Println("after marshal: ", data)
ret = string(data)
//fmt.Println("json format--> string(struct): ", ret)
return
//变量进行序列化
func testInt() (ret string, err error) {
var age = 100
data, err := json.Marshal(age)
if err != nil {
err = fmt.Errorf("json.marshal failed,err:%v", err)
return
ret = string(data)
return
//map进行序列化
func testMap() (ret string, err error) {
var m map[string]interface{}
m = make(map[string]interface{})
m["username"] = "user1"
m["age"] = 18
m["sex"] = "man"
data, err := json.Marshal(m)
if err != nil {
err = fmt.Errorf("json.marshal failed,err:%v", err)
return
ret = string(data)
return
//对slice进行序列化,slice里面可以是struct,基本类型,也可以是map。{这个相当复杂}
func testSlice() (ret string, err error) {
var s []map[string]interface{}
var m map[string]interface{}
m = make(map[string]interface{})
m["username"] = "user1"
m["age"] = 18
m["sex"] = "male"
s = append(s, m)
m["username"] = "user2"
m["age"] = 22
m["sex"] = "female"
s = append(s, m)
data, err := json.Marshal(s)
if err != nil {
err = fmt.Errorf("json.marshal failed,err:%v", err)
return
ret = string(data)
return
//反序列化struct测试
func UnmsStruct() {
data, err := testStruct()
if err != nil {
fmt.Println("test struct failed,", err)
return
var user1 User
err = json.Unmarshal([]byte(data), &user1)
if err != nil {
fmt.Println("Unmarshal failed, ", err)
return
fmt.Println("UnMarshal: ", user1)
//反序列化Map测试
func UnmsMap() {
data, err := testMap()
if err != nil {
fmt.Println("test map failed,", err)
return
var m map[string]interface{}
err = json.Unmarshal([]byte(data), &m)
if err != nil {
fmt.Println("Unmarshal failed, ", err)
return
fmt.Println("UnMarshal: ", m)
//反序列化Slice测试
func UnmsSlice() {
data, err := testSlice()
if err != nil {
fmt.Println("test map failed,", err)
return
var s []map[string]interface{}
err = json.Unmarshal([]byte(data), &s)
if err != nil {
fmt.Println("Unmarshal failed, ", err)
return
fmt.Println("UnMarshal: ", s)
//反序列化Int测试
func UnmsInt() {
data, err := testInt()
if err != nil {
fmt.Println("test map failed,", err)
return
var i int
err = json.Unmarshal([]byte(data), &i)
if err != nil {
fmt.Println("Unmarshal failed, ", err)
return
fmt.Println("UnMarshal: ", i)
func main() {
fmt.Println("==============结构体反序列化==============")
UnmsStruct()
fmt.Println("==============map反序列化==============")
UnmsMap()
fmt.Println("==============slice反序列化==============")
UnmsSlice()
fmt.Println("==============基本类型反序列化==============")
UnmsInt()
output
PS F:\go> .\main.exe
==============结构体反序列化==============
UnMarshal: {user1 shangke 18 2008/8/8 mael xiehzh@ffcs.cn 18950200000}
==============map反序列化==============
UnMarshal: map[age:18 sex:man username:user1]
==============slice反序列化==============
UnMarshal: [map[age:22 sex:female username:user2] map[age:22 sex:female username:user2]]
==============基本类型反序列化==============
UnMarshal: 100
PS F:\go>
XieHZ同学
关注
关注
点赞
收藏
觉得还不错?
一键收藏
打赏
知道了
评论
r1笔记day25 json协议以及反序列化样例
分别对struct、slice、基本类型、map进行序列化和反序列化:package mainimport ("encoding/json""fmt")type User struct {UserName string `json:"username"` //改变json打包的key,将大写变成小写NickName string `json:"nickname"`...
复制链接
扫一扫
专栏目录
r1笔记day19_01 UberGo编程规范
01-07
github上的地址:https://github.com/xxjwxc/uber_go_guide_cn
目录如下:
介绍
指导原则
指向 interface 的指针
接收器 (receiver) 与接口
零值 Mutex 是有效的
在边界处拷贝 Slices 和 Maps
使用 defer 释放资源
Channel 的 size 要么是 1,要么是无缓冲的
枚举从 1 开始
错误类型
错误包装 (Error Wrapping)
处理类型断言失败
不要 panic
使用 go.uber.org/atomic
避免可变全局变量
性能
优先
go中结构体与json的格式转换
simatongming的博客
10-09
1万+
基于简单结构体的处理,结构体的嵌套类似type User struct { UserName string
PassWord string
}1)结构体->json user := User{
UserName: "tyming",
PassWord: "1234567890",//这里逗号不能少
//json.Marsha
参与评论
您还未登录,请先
登录
后发表或查看评论
golang基础-json序列化、反序列化、自定义error
热门推荐
全干工程师
11-05
2万+
json协议
结构体转json
package main
import (
"fmt"
"encoding/json"
type User struct {
UserName string `json:"username"`
NickName string `json:"nickname"`
Age int
Birt
go语言连接mysql转为json文件_Go语言JSON数据相互转换
weixin_30399511的博客
01-27
147
结构体转json结构体转json示例:package mainimport ("encoding/json""fmt")//用户type User struct {UserName string `json:"username"`NickName string `json:"nickname"`Age int `json:"age"`Birthday string `json:"birth...
Golang原生json可以一库走天下吗?
QcloudCommunity的博客
10-11
449
导语|Go的“玩家”们看到这个题目可能会很疑惑——对于JSON而言,Go原生库encoding/json已经是提供了足够舒适的JSON处理工具,广受Go开发者的好评。它还能有什么问题?...
go语言 json 序列化、反序列化用例解析
weixin_38387929的博客
08-12
287
简介
Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json 字符串,
另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。
go语言本身为我们提供了json的工具包”encoding/json”。
- Encoding
func Marshal(v interface{}) ([]byte, error)
递归进行json编码
func MarshalIndent(v interface{},
r1笔记day23 负载均衡 3
01-20
实现一个支持负载均衡管理的类:(如果VSC保存时候,没有自动调整格式,那就是代码有问题了,struct初始化时候每一行需要 逗号 “,” 。 不然回报错:“syntax error: unexpected newline, expecting comma or } ”...
r1笔记day27 goroutine and channel
01-20
一个简单的例子: package main import ( fmt time ) func test() { var i int for { fmt.Println(i) time.Sleep(time.Second) i++ } } func main() { go test() ...m = make(map[int]uint64)
r1笔记day20_03 Go reflect 2
01-07
下面通过修改int值的例子,学习type Value,以及提供的方法Elem(),这个方法就相当于提供了指针,并指向了这个变量,就可以修改值了。 利用反射操作Int,比如说修改int的值 package main import ( fmt reflect ) ...
r1笔记day24 golang package的理解与使用
01-20
1、package中可以用的东西 package里面有type,func,interface{},const这些可以用的。 2、package中func{} 与 type的使用比较简单,...实现了接口的任何类型,都可以调用接口的函数【R和W】以及将接口作为参数的函数
r1笔记day28 单元测试(T类型)
01-08
Go自带了测试框架和工具,在testing包中,以便完成单元测试(T类型)和性能测试(B类型)。 一般测试代码放在*_test.go文件中,与被测代码放于同一个包中。 单元测试 测试函数名称格式是:Test[^a-z],即以Test开头...
iPod Authentication Coprocessor Spec 2.0C R1.rar_iOS通讯协议
07-15
iOS设备通讯协议资料,可能不是最新的,仅供参考,如需要代码请留言
WIFI Passpoint R1 协议
12-07
WIFI Passpoint R1 协议 WIFI Passpoint R1 协议 WIFI Passpoint R1 协议
应用手册Software SAR ADC CC2642R1 sensor controller-教程与笔记习题
05-18
应用手册Software SAR ADC using the CC2642R1 sensor controller
S32DS for ARM 2018.R1 链接文件(linker file)学习笔记
01-06
S32DS for ARM 2018.R1 链接文件(linker file)学习笔记 在S32DS for ARM 2018.R1自带的例程中有两个链接文件,分别为S32K1xx_flash.ld和S32K1xx_ram.ld,前者针对的是程序在flash中运行的链接文件,后者是在ram中...
固定式压力容器操作R1取证笔记.pdf
10-04
固定式压力容器操作R1取证笔记.pdf
固定式压力容器操作R1取证笔记.docx
09-18
固定式压力容器操作R1取证笔记.docx
加载RIP协议 得到R1 R2 R3的路由表
10-20
加载RIP协议 得到R1 R2 R3的路由表
2010-04-25模板从R1-8
04-26
2010-04-25模板从R1-82010-04-25模板从R1-82010-04-25模板从R1-82010-04-25模板从R1-82010-04-25模板从R1-82010-04-25模板从R1-8
r1、r2、r3 开启 mpls 报文转发及 ldp 标签转发协议
最新发布
04-30
MPLS(多协议标签交换)是一种高效的数据传输协议,它可以通过标记数据包的标签来加快数据传输速度。而LDP(标签分发协议)则是用来管理MPLS标签的分配和传输。
当r1、r2、r3开启MPLS报文转发及LDP标签转发协议时,它们可以通过MPLS标签来交换数据包并且保持路由器间的通信。这意味着它们可以利用MPLS标签来快速识别数据包并将其从源路由器传递到目标路由器。同时,LDP将负责分配和传输这些MPLS标签。
通过使用MPLS和LDP,r1、r2、r3可以在执行核心路由器功能的同时,具有更快的数据传输速度以及更高的网络吞吐量,从而为客户端提供更优质的服务。
总之,开启MPLS报文转发及LDP标签转发协议是一种有效的方法,可以提高路由器网络的性能,并且使路由器更快地传递数据。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
XieHZ同学
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
48
原创
42万+
周排名
42万+
总排名
6619
访问
等级
497
积分
粉丝
获赞
评论
收藏
私信
关注
热门文章
r1笔记day21_2 Go golang输出圣诞树(自娱自乐)
631
r1笔记day25 json协议以及反序列化样例
481
r1笔记day25 json协议以及序列化样例
463
r1笔记第9天 逻辑英语随堂笔记 (01)
345
r1笔记第10天 逻辑英语随堂笔记(02)
307
分类专栏
故障处理
Leetcode Golang
1篇
生活琐事
6篇
英语学习
4篇
Linux
1篇
常用命令
1篇
运维工具
kubernetes
golang
37篇
openstack
2篇
运维相关
docker
postgresql
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
r1笔记day28 单元测试(T类型)
r1笔记day27 goroutine and channel
r1笔记day26 错误处理
2020年5篇
2019年43篇
目录
目录
分类专栏
故障处理
Leetcode Golang
1篇
生活琐事
6篇
英语学习
4篇
Linux
1篇
常用命令
1篇
运维工具
kubernetes
golang
37篇
openstack
2篇
运维相关
docker
postgresql
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
XieHZ同学
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值