go中json的使用

go中json的使用

go 原生提供了json的加码解码支持,import "encoding/json"就可以了。

1. encode 编码

json的 encode 加码方法是:

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

正是因为参数是接口 interfae{},所以,理论上可以传入任何数据。

1.1 struct 编码

我们一般都用用结构体作为数据源,给他json加码操作,因为它的类型可以加入任意的数据类型,符合json字符串的特性。

我们先定义2个结构体,作为数据类型。

//1. 先定义1个结构体
type Animal struct {
   
	Name  string
	Order string
}

// 定义结构体嵌套
type List struct {
   
	Ret  int
	Info []Animal
}

要想对结构体实现json加码操作,得实例化1个变量出来。


//实例化1个变结构体量
var list0 = Animal{
   Name: "wo", Order: "HELLO"}

//encode
list9, err := json.Marshal(list0)
if err != nil {
   
	_ = fmt.Errorf("%v", err)
}

//输出的list9是一个字符的切片 []byte, 得用string() 方法转换成字符串 
fmt.Printf("%v\n", string(list9)) 

输出的json字符串如下:

{"Name":"wo","Order":"HELLO"}

我们来1个复杂的结构体,实现更复杂的json

//  结构体重复嵌套

	//由于需要嵌套,所以得定义1个切片结构体。
	var animals []Animal

	//通过append给切片添加数据。
	animals = append(animals, Animal{
   Name: "Platypus", Order: "Monotremata"})
	animals = append(animals, Animal{
   Name: "Quoll", Order: "Dasyuromorphia"})

	// encode
	list2, err := json.Marshal(animals)
	if err != nil {
   
		_ = fmt.Errorf("%v", err)
	}

	// 转换成字符串
	fmt.Printf("%v\n", string(list2)) //

输出json如下:

[{"Name":"Platypus","Order":"Monotremata"},{"Name":"Quoll","Order":"Dasyuromorphia"}]

我们再来看另外一种嵌套方式,子元素嵌套类型。

// 3. 子元素嵌套类型的结构体

	var animals []Animal
	
	//通过append给切片添加数据。
	animals = append(animals, Animal{
   Name: "Platypus", Order: "Monotremata"})
	animals = append(animals, Animal{
   Name: "Quoll", Order: "Dasyuromorphia"})
	
	//初始化
	var list1 = List{
   Ret: 0, Info: animals}

	list3, err := json.Marshal(list1)
	if err != nil {
   
		_ = fmt.Errorf("%v", err)
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值