解析嵌套类型示例:

func test3() {
b := []byte(`{"Name":"tom","Age":20,"Email":"tom@gmail.com", "Parents" : ["tom", "kite"]}`)
var f map[string]interface{}
json.Unmarshal(b, &f)
fmt.Printf("f: %v\n", f) for k, v := range f {
fmt.Printf("k: %v\n", k)
fmt.Printf("v: %v\n", v)
}
}

创建json文件示例:

func test4() {
//定义一个结构体
type Person struct {
Name string
Age int
Email string
Parent []string
}
//结构体初始化
p := Person{
Name: "tom",
Age: 20,
Email: "tom@gmail.com",
Parent: []string{"big tom", "big kite"},
}
//打开a.json文件进行写入,如果没有此文件就创建一个,赋予权限777
f, _ := os.OpenFile("a.json", os.O_WRONLY|os.O_CREATE, 0777)
//在程序执行完成后,关闭文件
defer f.Close()
//创建这个文件writer对象的Encoder
e := json.NewEncoder(f)
//把结构体p的内容转换成json写入文件中
e.Encode(p)
}

打开json文件示例:

func test5() {
//打开a.json文件
f, _ := os.Open("a.json")
defer f.Close()
//创建这个文件Reader对象的Decoder
d := json.NewDecoder(f)
var v map[string]interface{}
//取出json文件里的内容并转换为map类型
d.Decode(&v)
fmt.Printf("v: %v\n", v)
}

将结构体转换成json: 

func Marshal() {
p := Person{
Name: "tom",
Age: 20,
Email: "tom@gmail.com",
}
b, _ := json.Marshal(p)
fmt.Printf("string(b): %v\n", string(b))
}

go_json_learn的更多相关文章

随机推荐

  1. 洛谷P1656 炸铁路 (求割边)

    用tarjan变种求割边的模板题 其实还可以求出所有的边双(用栈),但本题不需要求. 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...

  2. 洛谷P1714 切蛋糕(单调队列)

    先放代码...... 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=5e5+10,M=0x3f3f3f3f; ...

  3. MySQL安装卸载、idea中Database的使用、常用的sql语句

    MySQL安装卸载 MySQL安装 在下面的资源链接中下载MySQL软件压缩包(绿色版),这个版本是MySQL5.7.29的,本教程也只适用于这个绿色版的,如果下载的是安装包那就可能有些地方不一样了, ...

  4. MISC 网刃杯2022

    ​ MISC 玩坏的winxp 难度系数:4.0 题目描述:小敏的电脑Windows XP Professional不小心被玩坏了,里边有重要的东西,你能帮帮她吗? 利用whihex挂载 查看分区1 ...

  5. JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。

    JavaBean组件 JavaBean组件实际是一种java类.通过封装属性和方法成为具有某种功能或者处理某个业务的对象. 特点:1.实现代码的重复利用.2.容易编写和维护.3.jsp页面调用方便. ...

  6. JUI(6)线程池

    文章目录 1.SynchronousQueue 2.线程池(重点) 2.1 使用单例 2.2.使用固定大小的线程 2.3.缓存线程池 2.4 七大参数 1.SynchronousQueue packa ...

  7. 【UML】统一建模语言

    如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...

  8. Debian11管理员手册

    1 用户与群组数据库 用户清单通常保存在 /etc/passwd 文件内,把哈希编码后的密码保存在 /etc/shadow 文件内.这两个文件都是纯文本档,以简单的格式保存,可以用文本编辑器读取与修改 ...

  9. 线上kafka消息堆积,consumer掉线,怎么办?

    线上kafka消息堆积,所有consumer全部掉线,到底怎么回事? 最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线. 整体排查 ...

  10. Python基础之面向对象:3、继承与派生

    面向对象 一.三大特征之继承 python三大特征: 封装.继承.多态 三者中继承最为核心,实际应用对,感受较为直观 封装和多态略微抽象 1.继承的概念 继承的含义: ​ 在现实生活中,继承表示人与人 ...