Golang JOSN
json概念
JSON是一种轻量级的数据交换格式。
数据形式为:key-value
应用场景
![22](https://img-blog.csdnimg.cn/20201228162036653.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MDM5MzMx,size_16,color_FFFFFF,t_70#pic_center)
-
数据格式说明
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228162124134.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MDM5MzMx,size_16,color_FFFFFF,t_70)
-
结构体、map、切片、序列化
package main
import (
"encoding/json"
"fmt"
)
type Monster struct {
Name string `json:"monster_name"`
Nirrhday string `json:"monster_nirrday"`
SSS int
Nkill string
}
func teststruct() {
temp := Monster{
Name: "甄姬",
Nirrhday: "000-2-21",
SSS: 1111,
Nkill: "善水",
}
data, err := json.Marshal(&temp)
if err != nil {
fmt.Printf("%v\n", err)
}
fmt.Printf("monster系列化: %v \n", string(data))
}
func testMap() {
temp := make(map[string]interface{})
temp["name"] = "孙悟空"
temp["age"] = 500
temp["address"] = "西青区"
data, err := json.Marshal(temp)
if err != nil {
fmt.Printf("%v\n", err)
}
fmt.Printf("map系列化: %v \n", string(data))
}
func testslice() {
slice := make([]map[string]interface{}, 0)
m1 := make(map[string]interface{})
m1["name"] = "奥特玛"
m1["age"] = 999
m1["address"] = "MZ78星云"
slice = append(slice, m1)
m2 := make(map[string]interface{})
m2["na"] = "谢尔比"
m2["aget"] = 1987
m2["addrtuess"] = "满护盾"
slice = append(slice, m2)
data, err := json.Marshal(slice)
if err != nil {
fmt.Printf("%v\n", err)
}
fmt.Printf("slice系列化: %v \n", string(data))
}
func main() {
teststruct()
testMap()
testslice()
}
反序列化
package main
import (
"encoding/json"
"fmt"
)
type Monster struct {
Name string
Nirrhday string
SSS int
Nkill string
}
func unmarshalStruct() {
str := " {\"Name\":\"甄姬\",\"Nirrhday\":\"000-2-21\",\"SSS\":1111,\"Nkill\":\"善水\"}"
var obj Monster
err := json.Unmarshal([]byte(str), &obj)
if err != nil {
fmt.Printf("this is %v\n", err)
}
fmt.Println(obj)
}
func unmarshalMap() {
str := "{\"address\":\"西青区\",\"age\":500,\"name\":\"孙悟空\"}"
var obj map[string]interface{}
err := json.Unmarshal([]byte(str), &obj)
if err != nil {
fmt.Printf("this is %v\n", err)
}
fmt.Println(obj)
}
func unmarshalSlice() {
str := "[{\"address\":\"MZ78星云\",\"age\":999,\"name\":\"奥特玛\"},{\"addrtuess\":\"满护盾\",\"aget\":1987,\"na\":\"谢尔比\"}] "
var obj []map[string]interface{}
err := json.Unmarshal([]byte(str), &obj)
if err != nil {
fmt.Printf("this is %v\n", err)
}
fmt.Println(obj)
}
func main() {
unmarshalStruct()
unmarshalMap()
unmarshalSlice()
}