一、struct转json
package main
import (
"encoding/json"
"fmt"
)
type Teacher struct {
Name string
Subject string
Id int
}
func main() {
fmt.Println("----------struct转json----------")
// 准备struct数据
tea :=Teacher{
"Zhou",
"Math",
1001,
}
json_data , err :=json.Marshal(tea)
if err!=nil {
fmt.Println(err)
}else {
fmt.Println(string(json_data))//返回ASCII码,需要转换为字符串 {"Name":"Zhou","Subject":"Math","Id":1001}
}
//格式化json数据
json_format ,errs := json.MarshalIndent(tea,""," ") //生成前缀为空,缩进为两个空格的json数据
if errs!=nil {
fmt.Println(errs)
}
fmt.Println(string(json_format))
}
MarshalIndent函数格式化生成的数据
{
"Name": "Zhou",
"Subject": "Math",
"Id": 1001
}
二、json转struct
package main
import (
"encoding/json"
"fmt"
)
type Teacher struct {
Name string
Subject string
Id int
}
func main() {
var tea2 []Teacher
json_byte := []byte(`[
{"Name":"Qiao","Subject":"Math","Id":1001},
{"Name":"Lu","Subject":"English","Id":1002}
]`)
err2 := json.Unmarshal(json_byte,&tea2)
if err2!=nil {
fmt.Println(err2)
}
fmt.Println(tea2) //[]main.Teacher[{Qiao Math 1001} {Lu English 1002}]
}
三、map转json
package main
import (
"encoding/json"
"fmt"
)
func main(){
var mp map[string]string //声明map变量
mp = make(map[string]string)//分配内存空间
//mp := make(map[string]string) //或者将上面的两部简化为一步
mp["name"]="XiaoMing"
mp["age"]="18"
mp["message"]="Hello World"
mp["like"]="Golang"
fmt.Println("-----原生map数据--------")
fmt.Println(mp)
//生成未格式化的json数据
mp_json,err := json.Marshal(mp)
if err !=nil {
fmt.Println(err)
}else {
fmt.Println(string(mp_json)) //{"age":"18","like":"Golang","message":"Hello World","name":"XiaoMing"}
}
fmt.Println("------生成格式化json数据------")
mp_json_indent,error := json.MarshalIndent(mp,""," ")//前缀为空,缩进为2个空格
if error!=nil {
fmt.Println(error)
}else {
fmt.Println(string(mp_json_indent))
}
MarshalIndent函数格式化生成的数据
{
"age": "18",
"like": "Golang",
"message": "Hello World",
"name": "XiaoMing"
}
四、json转map
package main
import (
"encoding/json"
"fmt"
)
func main(){
json_data :=`{"name":"XiaoJiang",
"age":"17"}`
json_mp :=make(map[string]interface{})
json_err :=json.Unmarshal([]byte(json_data),&json_mp)
if json_err!=nil {
fmt.Println(json_err)
}
fmt.Println(json_mp) //map[age:17 name:XiaoJiang]
}