栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang 解析JSON

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang 解析JSON

什么是JSON
  • JSON: JavaScript Object Notation(JavaScript 对象表示法)
  • JSON 是存储和交换文本信息的语法,类似 XML。
  • JSON 比 XML 更小、更快,更易解析。
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • 简单来说,这种结构储存数据有许多优点,我们喜欢使用这种结构来传递数据,我们把自己的结构体转换成JSON格式,别人再将JSON格式解析成自己语言的结构体。

JSON语法规则

  • 数组(Array)用方括号(“[]”)表示。
  • 对象(Object)用大括号(”{}”)表示。
  • 名称/值对(name/value)组合成数组和对象。
  • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
    并列的数据之间用逗号(“,”)分隔
Golang转义JSON
package main

import (
	"encoding/json"
	"fmt"
)

type userInfo struct {
	Name  string
	Age   int `json:"age"`
	Hobby []string
}

func main() {
	a := userInfo{Name: "wang", Age: 18, Hobby: []string{"Golang", "TypeScript"}}
	//实现了Marshaler接口的类型可以将自身序列化为合法的json描述。
	buf, err := json.Marshal(a)
	if err != nil {
		panic(err)
	}
	fmt.Println(buf)         // [123 34 78 97...]
	fmt.Println(string(buf)) // {"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}

	//MarshalIndent类似Marshal但会使用缩进将输出格式化。
	buf, err = json.MarshalIndent(a, "", "t")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(buf))

	var b userInfo
	// Unmarshal函数解析json编码的数据并将结果存入b指向的值。
	err = json.Unmarshal(buf, &b)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%#vn", b) // main.userInfo{Name:"wang", Age:18, Hobby:[]string{"Golang", "TypeScript"}}
}
[123 34 78 97 109 101 34 58 34 119 97 110 103 34 44 34 97 103 101 34 58 49 56 44
 34 72 111 98 98 121 34 58 91 34 71 111 108 97 110 103 34 44 34 84 121 112 101 8
3 99 114 105 112 116 34 93 125]
{"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}                  
{                                                                         
        "Name": "wang",                                                   
        "age": 18,                                                        
        "Hobby": [                                                        
                "Golang",                                                 
                "TypeScript"                                              
        ]                                                                 
}                                                                         
main.userInfo{Name:"wang", Age:18, Hobby:[]string{"Golang", "TypeScript"}}
参考
  • JSON 教程 | 菜鸟教程 (runoob.com)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号