Go语言对JSON数据进行序列化和反序列化

 更新时间:2022年07月18日 14:49:45   作者:taadis  
这篇文章介绍了Go语言对JSON数据进行序列化和反序列化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

golang中对json的序列化/反序列化操作还是比较容易的,序列化操作主要是通过encoding/json包的Marshal()方法来实现,反序列化操作主要是通过encoding/json包的Unmarshal()方法来实现。

//JSON序列化和反序列化

//可用在api序列化输出
//转成结构体,方便程序操作等

package main

import (
	"encoding/json"
	"fmt"
)

type Response1 struct {
	Page   int
	Fruits []string
}

type Response2 struct {
	Page   int      `json:"page"`
	Fruits []string `json:"fruits"`
}

func main() {

	//布尔型
	boolByte, _ := json.Marshal(true)
	fmt.Println(string(boolByte))

	//整数型
	intByte, _ := json.Marshal(100)
	fmt.Println(string(intByte))

	//浮点型
	floatByte, _ := json.Marshal(1.23456)
	fmt.Println(string(floatByte))

	//字符串
	stringByte, _ := json.Marshal("字符串啊啊啊")
	fmt.Println(string(stringByte))

	//切片
	sliceByte, _ := json.Marshal([]string{"apple", "orange", "banana"})
	fmt.Println(string(sliceByte))

	//字典
	mapByte, _ := json.Marshal(map[string]int{"apple": 5, "orange": 6, "banana": 7})
	fmt.Println(string(mapByte))

	//自定义类型1
	customsByte1, _ := json.Marshal(&Response1{Page: 1, Fruits: []string{"apple", "orange", "banana"}})
	fmt.Println(string(customsByte1))

	//自定义类型2,tag语法
	customsByte2, _ := json.Marshal(&Response2{Page: 2, Fruits: []string{"apple", "orange", "banana"}})
	fmt.Println(string(customsByte2))

	//反序列化到结构体
	json1 := `{"Page":1,"Fruits":["apple","orange","banana"]}`
	json2 := `{"page":2,"fruits":["apple","orange","banana"]}`
	response1 := Response1{}
	response2 := Response2{}
	json.Unmarshal([]byte(json1), &response1)
	fmt.Println(response1)
	json.Unmarshal([]byte(json2), &response2)
	fmt.Println(response2)
}

到此这篇关于Go语言对JSON数据进行序列化和反序列化的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 如何使用go-zero开发线上项目

    如何使用go-zero开发线上项目

    这篇文章主要介绍了如何使用go-zero开发线上项目,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 详解Go语言实现线性查找算法和二分查找算法

    详解Go语言实现线性查找算法和二分查找算法

    线性查找又称顺序查找,它是查找算法中最简单的一种。二分查找,也称折半查找,相比于线性查找,它是一种效率较高的算法。本文将用Go语言实现这两个查找算法,需要的可以了解一下
    2022-12-12
  • Go语言转换所有字符串为大写或者小写的方法

    Go语言转换所有字符串为大写或者小写的方法

    这篇文章主要介绍了Go语言转换所有字符串为大写或者小写的方法,实例分析了ToLower和ToUpper函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go官方工具链用法详解

    Go官方工具链用法详解

    Go官方工具链工具要求所有的Go源代码文件必须以.go后缀结尾。这里,我们假设一个最简单的Go程序放在hello.go的文件中,下面通过示例代码给大家介绍Go官方工具链用法简介,需要的朋友可以参考下
    2021-10-10
  • go语言用八百行代码实现一个JSON解析器

    go语言用八百行代码实现一个JSON解析器

    这篇文章主要为大家介绍了go语言用八百行代码实现一个JSON解析器实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Go gRPC服务进阶middleware使用教程

    Go gRPC服务进阶middleware使用教程

    这篇文章主要为大家介绍了Go gRPC服务进阶middleware的使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang中对json的优雅处理方式

    Golang中对json的优雅处理方式

    这篇文章主要给大家介绍了关于Golang中对json的优雅处理方式,解析JSON在golang中很麻烦,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • go解析svn log生成的xml格式的文件

    go解析svn log生成的xml格式的文件

    这篇文章主要介绍了go解析svn log生成的xml格式的文件的方法,非常的实用,有需要的小伙伴可以参考下。
    2015-04-04
  • Golang实现事务型内存数据库的方法详解

    Golang实现事务型内存数据库的方法详解

    内存数据库经我们经常用到,例如Redis,那么如何从零实现一个内存数据库呢,本文旨在介绍如何使用Golang编写一个KV内存数据库MossDB
    2023-03-03
  • Go打包附件内容到执行文件的方法

    Go打包附件内容到执行文件的方法

    处于种种原因, 我们不希望这部分额外的内容以附件的形式出现, 有没有什么办法能够将附件内容直接打包进可执行文件中呢,下面小编给大家介绍下Go打包附件内容到执行文件的方法,感兴趣的朋友一起看看吧
    2023-03-03

最新评论