解析嵌套类型示例:

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. 【Spring boot】启动过程源码分析

    启动过程结论 推测web应用类型. spi的方式获取BootstrapRegistryInitializer.ApplicationContextInitializer.ApplicationCont ...

  2. RAID5 IO处理之写请求代码详解

    我们知道RAID5一个条带上的数据是由N个数据块和1个校验块组成,其校验块由N个数据块通过异或运算得出,这样才能在任意一个成员磁盘失效时通过其他N个成员磁盘恢复出用户写入的数据.这也就要求RAID5条 ...

  3. 3.RabbitMQ系列之消费者

    1. 编写消费者 @Component @RabbitListener(queues = "hello") public class RabbitReceiver { @Rabbi ...

  4. 成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题

    1.问题描述 在输入框中.输入内容.点击回车.没有效果 问题代码 2.问题解决思路 查看官网的解释说明: 要使用.native修饰符 3.问题解决 修改后的代码 修改后的效果

  5. Redis5种数据类型

    字符串 @GetMapping("/string") public String stringTest(){ redisTemplate.opsForValue().set(&qu ...

  6. 记录一次成功反混淆脱壳及抓包激活app全过程

    记录一次成功反混淆脱壳及抓包激活app全过程 前言 ​ 近期接到一个需求,要对公司之前开发的一款app进行脱壳.因为该app是两年前开发的,源代码文件已经丢失,只有加壳后的apk文件,近期要查看其中一 ...

  7. 一篇文章带你了解NoSql数据库——Redis简单入门

    一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...

  8. ATT&CK框架整理(中英文整理)

    工作需要了解了一下ATT&CK框架,留个记录.

  9. C# 语法分析器(二)LR(0) 语法分析

    系列导航 (一)语法分析介绍 (二)LR(0) 语法分析 (三)LALR 语法分析 (四)二义性文法 (五)错误恢复 (六)构造语法分析器 首先,需要介绍下 LALR 语法分析的基础:LR(0) 语法 ...

  10. Vue2基础知识学习

    Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...