encoding/json包的学习总结

本文介绍了Go语言中encoding/json包的使用,包括JSON的基本概念、Marshal方法将对象转化为JSON,以及Unmarshal方法将JSON解析回对象。示例代码演示了如何进行转换操作。
摘要由CSDN通过智能技术生成

encoding/json

  • encoding/json 是Go语言自带的JSON转换库。

1 JSON

  • JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
  • 它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2 Marshal

func Marshal(v interface{}) ([]byte, error)

  • 把对象v转换为JSON编码

    • 布尔型转换为 JSON 后仍是布尔型, 如true -> true;
    • 浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23;
    • 字符串将以UTF-8编码转化输出为Unicode字符集的字符串,特殊字符比如角括号"<"">"会转义为"\u003c""\u003e""&"转义为"\u0026"
    • 数组和切片被转换为JSON 里面的数组,[]byte类会被转换为base64编码后的字符串,slice的零值被转换为null;
    • 结构体会转化为JSON对象,并且只有结构体里边以大写字母开头可被导出的字段才会被转化输出,而这些可导出的字段会作为JSON对象的字符串索引;
    • 转化一个map 类型的数据结构时,该数据的类型必须是 map[string]T(T 可以是encoding/json 包支持的任意数据类型)。
    • 参考
  • 例子

    • 下面这个代码段主要展示了如何将go语言里的结构体类型转换为json类型
package test

import (
    "encoding/json"
    "fmt"
    "os"
)

func main() {
   
	// 定义一个结构体
    type ColorGroup struct {
   
        ID     int
        Name   string
        Colors []string
	}
	//一个实例
    group := ColorGroup{
   
        ID:     1,
        Name:   "Reds",
        Colors: []string{
   "Crimson", "Red", "Ruby", "Maroon"},
	}
	//开始解析这个实例,换句话说,将go的struct转换为json的格式
    b, err := json.Marshal(group)
    if err != nil {
   
        fmt.Println("error:", err)
	}
	//输出
    os.Stdout.Write(b)
}
  • 输出结果
{
   "ID":1,"Name":"Reds","Colors"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值