go语言中的json
结构体类型转化为json格式
package main
import (
"encoding/json"
"fmt"
)
//如果要转化成json格式,那么成员变量名的首字母必须要大写
type Girl struct {
Name string
Age int
gender byte //故意不大写
}
func main(){
girl := Girl{"satori", 18, 'f'}
buf, err:=json.Marshal(girl)
if err != nil{
fmt.Println(err)
}
fmt.Println(string(buf)) //{"Name":"satori","Age":18}
//还有一个格式化输出
buf1,_ := json.MarshalIndent(girl, "", " ")
fmt.Println(string(buf1))
/*
{
"Name": "satori",
"Age": 18
}
*/
}
package main
import (
"encoding/json"
"fmt"
)
//如果要转化成json格式,那么成员变量名的首字母必须要大写
//但是也可以转成小写
type Girl struct {
Name string `json:"name"`
Age int `json:"age"`
Anime string `json:"-"` //"-"表示不会输出到屏幕
Loveme bool `json:",string"`//",string"表示转化成字符串输出
gender byte //因为只有大写才可以转成json,那么我们这里是小写,既然转不成json,那么也就不支持`json:"xxx"`这种结构了
}
func main(){
girl := Girl{"satori", 18, "东方地灵殿",true,'f'}
buf,_:=json.Marshal(girl)
fmt.Println(string(buf))//{"name":"satori","age":18,"Loveme":"true"}
}
map类型转化为json格式
package main
import (
"encoding/json"
"fmt"
)
func main(){
m:=make(map[string]interface{})
m["name"]="satori"
m["age"]=18
m["gender"]='f'
m["anime"]="东方地灵殿"
buf,_ := json.MarshalIndent(m,""," ")
fmt.Println(string(buf))
/*
{
"age": 18,
"anime": "东方地灵殿",
"gender": 102,
"name": "satori"
}
*/
}
json转化为结构体
package main
import (
"encoding/json"
"fmt"
)
type GGirl struct {
Name string `json:"name"`
Age int `json:"age"`
Anime string `json:"anime"`
Loveme bool `json:"loveme"`
}
func main(){
var girl GGirl
jsonBuf:=`{
"name":"satori",
"age": 18,
"anime": "东方地灵殿",
"loveme":true
}`
err := json.Unmarshal([]byte(jsonBuf),&girl)
if err!=nil{
fmt.Println("err=", err)
return
}
fmt.Println(girl)//{satori 18 东方地灵殿 true}
}
package main
import (
"encoding/json"
"fmt"
)
//如果结构体的成员不够
type GGirl struct {
Name string `json:"name"`
}
func main(){
var girl GGirl
jsonBuf:=`{
"name":"satori",
"age": 18,
"anime": "东方地灵殿",
"loveme":true
}`
err := json.Unmarshal([]byte(jsonBuf),&girl)
if err!=nil{
fmt.Println("err=", err)
return
}
//成员不够,会解析一部分
fmt.Println(girl)//{satori}
}
json转化为map
package main
import (
"encoding/json"
"fmt"
)
func main(){
jsonBuf :=`{
"name":"satori",
"age":18,
"gender":"f",
"anime":"东方地灵殿"
}`
m:=make(map[string]interface{})
//取地址,把jsonBuf传到m里面去
err:=json.Unmarshal([]byte(jsonBuf), &m)
if err!=nil{
fmt.Println("err=",err)
return
}
fmt.Println(m)//map[name:satori age:18 gender:f anime:东方地灵殿]
}
go语言中的json的更多相关文章
- JS语言中的JSON.parse()和JSON.stringify()
parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- C 语言中 setjmp 和 longjmp
在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处:但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转.后面我们会看到这两个函数在处理异常 ...
- c语言中的scanf在java中应该怎么表达,Scanner类。
1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...
- C语言中do...while(0)的妙用(转载)
转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语 ...
- C语言中,定义的含义?声明的含义?它们之间的区别是什么?
在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解! 定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名 ...
- C++中函数的默认参数和C语言中volatile的学习
1.函数默认参数 1 int func(int a,int b=10) 2 { 3 return a*b; 4 } 5 6 int main() 7 { 8 int c=func(2); 9 cout ...
- C语言中qsort函数用法
C语言中qsort函数用法-示例分析 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...
- c语言中time相关函数
工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...
随机推荐
- python完成简单购物功能
# # -*- coding: utf8 -*- # # Author:wxq # # date:2017/11/13 # # python 3.6 # 创建一个商品列表: product_lis = ...
- LTE中基于S1的切换
1:源eNodeB决定进行基于S1的切换.S1切换的原因可能是源eNodeB和目标eNodeB之间不存在X2连接,或者源eNodeB根据其他情况作出的判断. 2:源eNodeB向源MME发送Hando ...
- SQL select 和SQL where语句
一.SQL SELECT语句 用于从表中选取数据,结果被存储在一共结果表中(称为结果集) 1.语法: SELECT 列名称 FROM 表名称 以及: SELECT * FROM 表名称 注:SQ ...
- 为Ubuntu安装FTP服务
打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车 ...
- Android Service的分类详解
按照启动方式分类 谷歌官网对Service的分类 Service根据启动方式分为两类:Started和Bound.其中,Started()是通过startService()来启动,主要用于程序内部使用 ...
- 【题解】SHOI2008仙人掌图
本质上还是树形dp.建立圆方树,遇到圆点的时候直接求(和树形dp一样即可),遇到方点做中转点的时候要考虑会从圆的另一侧通过(需满足最短路径的原则).原本是对于圆上的点进行 \(n^{2}\) 的匹配, ...
- [洛谷P3521][POI2011]ROT-Tree Rotations
题目大意:给一棵$n(n\leqslant2\times10^5)$个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少.输出最少的逆序对个数 题解:线段树合并,对于每个节点求出交换 ...
- [洛谷P3803] 【模板】多项式乘法(FFT, NTT)
题目大意:$FFT$,给你两个多项式,请输出乘起来后的多项式. 题解:$FFT$,由于给的$n$不是很大,也可以用$NTT$做 卡点:无 C++ Code: FFT: #include <cs ...
- 皮肤包项目的 Gradle 脚本演化
我在做的一个项目需要有换肤功能,换肤的方案是采用第三方库 ThemeSkinning 的实现(在其基础上修复若干 bug).皮肤的制作是把相关的资源放在一个 app module 中打包成 apk,当 ...
- BZOJ1927 [Sdoi2010]星际竞速 【费用流】
1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec Memory Limit: 259 MB Submit: 2582 Solved: 1601 [Submit][St ...