在golang中使用json
jsoniter高性能json库
非常快,支持java和go
marshal使用的一些坑
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Id int `json:"id,string"` //加了这个序列化到json中int类型会被转换成string类型
Name string `json:"name"` //加了这个打印出来就是小写的name
//age int 如果这里是小写的age,则序列化之后print无法打印出来,marshal只可以序列化可以导出的属性
Age int `json:"age,omitempty"` //加了omitempty之后,如果该值为初始化空值,则不会输出,因为是int所以这里是0
Address string `json:"-"` //加了中划线的值是绝对被忽略的
}
func main() {
var json = jsoniter.ConfigCompatibleWithStandardLibrary //使用jsoniter第三方包替换官方json模块提升json模块性能
u := User{
Id: 12,
Name: "Jerry",
Age: 0,
}
data, err := json.Marshal(&u) //data是byte类型
if err != nil {
return
}
fmt.Println(string(data)) //{"id":"0","name":"Jerry"} //因为Age是0所以被omitempty过滤了,Address被-过滤了
u2 := &User{}
json.Unmarshal(data, u2) //反序列化data仍然需要使用byte类型
fmt.Println(u2) //&User{12 jerry 0} 可以发现Address没有反序列化,被过滤掉的字段无法反序列化到结构体中
}
在golang中使用json的更多相关文章
- [转]Golang 中使用 JSON 的小技巧
taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...
- Golang中解析json,构造json
json解析是如今(网络)应用程序开发中最不可或缺的一环了.许多语言需要库支持才可以解析.构造json,但Golang凭借着原生库就可以很好地做到这一点. json的基本表现形式有两个:struct与 ...
- 『Golang』在Golang中使用json
由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章. 包引用 import ( "encoding/json" "gi ...
- 在 golang 中使用 Json
序列化 序列化对象将使用 encoding/json 中的 Marshal 函数. 函数原型为:func Marshal(v interface{}) ([]byte, error) 以下是官网给出的 ...
- Go实战--golang中使用JWT(JSON Web Token)
http://blog.csdn.net/wangshubo1989/article/details/74529333 之前写过关于golang中如何使用cookie的博客: 实战–go中使用cook ...
- Go_14:GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- golang中的reflect包用法
最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生 ...
- Golang中的坑二
Golang中的坑二 for ...range 最近两周用Golang做项目,编写web服务,两周时间写了大概五千行代码(业务代码加单元测试用例代码).用Go的感觉很爽,编码效率高,运行效率也不错,用 ...
随机推荐
- SQL——JOIN(连接)
JOIN基于多个表之间的共同字段,把多个表的行结合起来. 一.INNER JOIN 关键字 INNER JOIN关键字:在表中存在至少一个匹配时返回行. 语法如下: SELECT 列名1,列名2... ...
- logrus 剖析之滚动日志
在实际开发过程中,为了节省磁盘,日志需要按照时间或者大小维度进行切割分成多分,归档过期的日志,删除久远的日志.这个就是在日常开发中经常遇见的日志滚动(log rotation) 那么在 logrus ...
- nginx安装错误:No package nginx available
出现错误: 1,备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentO ...
- C#的WebApi 与 EasyUi的DataGrid结合生成的可分页界面
1.从数据库每次取出的数据为当前分页的数据. 2.分页用的是EasyUI 的 Pagination控件,与DataGrid是相对独立的. 3.后台数据获取是通过WebApi去获取. 4.传入参数是:p ...
- IntelliJ IDEA 2019 激活码 | 全产品 | 跨平台 | Goland | PhpStorm | Rider | CentOS | Windows
>>> 下载地址: https://kenkao.pipipan.com/fs/14896800-375468824 >>> 下载地址2: https://pan. ...
- C# 值类型和引用类型等值判断
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- git便携版 添加git-bash到右键菜单
注册表路径 HKEY_CLASSES_ROOT\Directory\Background\shell 新建项取名open in git 默认设置为右键显示的名称 Git Bash Here 新建字符串 ...
- TCP 为什么需要三次握手而不是两次
我的理解: A 发送给B SYN, 然后B回复A ACK, 假设这两次握手已经完成, 但是B不知道A是否收到ACK就开始 recv , 这样就是空等 算是死循环吧??
- 【洛谷 P4070】 [SDOI2016]生成魔咒(后缀自动机)
题目链接 建出\(SAM\)后,不同子串个数就是\(\sum len(i)-len(fa(i))\) 因为\(SAM\)在线的,所以每加入一个字符就能直接加上其贡献,于是这道题就没了. 因为\(x\) ...
- 【转载】C#中通过Distinct方法对List集合进行去重
在C#的List集合对象中,可以使用Distinct方法来对List集合元素进行去重,如果list集合内部元素为值类型,则Distinct方法根据值类型是否相等来判断去重,如果List集合内部元素为引 ...