• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go 使用 JSON

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Encode

将一个对象编码成 JSON 数据,接受一个 interface{} 对象,返回 []byte 和 err

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

Marshal 函数将会递归遍历整个对象,依次按照成员类型对这个对象进行编码,类型转换如下:

1 bool 类型转换成 JSON 的 boolean

2 整数、浮点数等数值类型转换成 JSON 的 Number

3 string 转换成 JSON 的字符串(带 "" 号)

4 struct 转换成 JSON 的 Object ,再根据各个成员的类型递归打包

5 数组或切片转换成 JSON 的 Array

6 []byte 会先进行 base64 编码然后转换成 JSON 字符串

7 map 转换成 JSON 的 Object ,key 必须是 string

8 interface{} 按照内部的实际类型进行转换

9 channel、func等类型,会返回 UnsupportedTypeError

如下示例:

package main

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

// 定义一个结构体
type ColorGroup struct {
	ID int
	Name string
	Colors []string
}

func main() {
	group := ColorGroup{
		ID : 1,
		Name : "Reds",
		Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
	}

	b,err := json.Marshal(group)
	if err != nil{
		fmt.Println("error:",err)
	}

	os.Stdout.Write(b)
}

----------------------------------------------------------------------------

输出结果:

{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}

Decode

将 JSON 数据解码

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

类型转换规则和上面的规则类似,如下示例:

package main

import (
	"encoding/json"
	"fmt"
)

// func UnMarshal(data []byte,v interface{}) error

type Animal struct {
	Name string
	Order string
}

func main() {
	var animals []Animal
	jsonBlob := `[
	     {"Name" : "Platypus","Order" : "Monotremata"},
	     {"Name": "Quoll",    "Order": "Dasyuromorphia"}
	]`

	err := json.Unmarshal([]byte(jsonBlob),&animals)
	if err != nil {
		fmt.Println("error:",err)
	}

	fmt.Println(animals)
}

------------------------------------------------------------------

输出结果:

[{Platypus Monotremata} {Quoll Dasyuromorphia}]

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
5.1Go函数定义发布时间:2022-07-10
下一篇:
Go 垃圾回收发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap