本文摘自php中文网,作者藏色散人,侵删。
下面由golang教程栏目给大家介绍golang生成JSON及解析JSON,希望对需要的朋友有所帮助!
一、JSON解析到结构体
在介绍这部分之前先简要介绍一下Json语法
JSON 语法是 JavaScript 语法的子集。JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
1.JSON名称/值对
"name" : "value"
2.JSON值
可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在中括号中)
对象(在大括号中)
null
- JSON数据
JSON 数字可以是整型或者浮点型
{ "age":30 }
- JSON对象
JSON 对象在大括号({})中书写:
对象可以包含多个名称/值对:
1 2 3 4 5 6 7 8 9 | {
"name" : "runoob" ,
"alexa" : 10000,
"sites" : {
"site1" : "www.runoob.com" ,
"site2" : "m.runoob.com" ,
"site3" : "c.runoob.com"
}
}
|
- JSON数组
JSON 数组在中括号中书写:
数组可包含多个对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | {
"sites" : [
{
"name" : "菜鸟教程" ,
"url" : "www.runoob.com"
},
{
"name" : "google" ,
"url" : "www.google.com"
},
{
"name" : "微博" ,
"url" : "www.weibo.com"
}
]
}
|
- JSON布尔值
{ "flag":true }
- JSON null
{ "runoob":null }
Json解析到结构体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package main
import (
"encoding/json"
"fmt"
"os"
)
type Server struct {
ServerName string
ServerIP string
}
type Serverslice struct {
Servers []Server
}
func main() {
var s Serverslice
str := `{ "servers" :
[{ "serverName" : "Guangzhou_Base" , "serverIP" : "127.0.0.1" },
{ "serverName" : "Beijing_Base" , "serverIP" : "127.0.0.2" }]}`
err:=json.Unmarshal([]byte(str), &s)
if err!=nil{
fmt.Println(err)
}
fmt.Println(s)
fmt.Println(s.Servers[0].ServerName)
}
|
二、JSON转map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package main
import (
"fmt"
"encoding/json"
)
func main() {
b := []byte(`{ "IP" : "127.0.0.1" , "name" : "SKY" }`)
m := make(map[string]string)
err := json.Unmarshal(b, &m)
if err != nil {
fmt.Println( "Umarshal failed:" , err)
return
}
fmt.Println( "m:" , m)
for k,v :=range m {
fmt.Println(k, ":" , v)
}
}
|
输出结果:
m: map[IP:127.0.0.1 name:SKY]
name : SKY
IP : 127.0.0.1
三、生成JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package main
import (
"encoding/json"
"fmt"
)
type Server struct {
ServerName string `json: "serverName,string" `
ServerIP string `json: "serverIP,omitempty" `
}
type Serverslice struct {
Servers []Server `json: "servers" `
}
func main() {
var s Serverslice
s.Servers = append(s.Servers, Server{ServerName: "Guangzhou_Base" , ServerIP: "127.0.0.1" })
s.Servers = append(s.Servers, Server{ServerName: "Beijing_Base" , ServerIP: "127.0.02" })
b, err := json.Marshal(s)
if err != nil {
fmt.Println( "JSON ERR:" , err)
}
fmt.Println(string(b))
}
|
以上就是golang如何生成JSON及解析JSON的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
golang 架构设计原则 接口隔离原则
golang无法解析json怎么办?
分享go命名规范小记
golang在各平台下交叉编译
golang如何退出进程?
golang二维切片初始化
go语言的时间获取
golang适合web开发吗?
详解golang中方法的receiver为指针和不为指针的区别
golang 如何开启协程
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang如何生成JSON及解析JSON