JSON简介

image.png
image.png

JSON数据格式

image.png

JSON数据在线解析

image.png

JSON序列化

image.png

结构体序列化

json.Marshal()

  1. // 结构体序列化
  2. monster := Monster{
  3. "大头",
  4. 105,
  5. "202019951120",
  6. 5000.0,
  7. "王八拳",
  8. }
  9. fmt.Println(monster)
  10. data,err := json.Marshal(&monster)
  11. if err != nil {
  12. fmt.Println("序列化失败!")
  13. }
  14. fmt.Printf(string(data))

image.png
image.png

map序列化

  1. //map序列化
  2. testMap := make(map[string]interface{})
  3. testMap["name"] = "大头"
  4. testMap["age"] = 150
  5. testMap["sex"] = "男"
  6. data,err = json.Marshal(testMap)
  7. fmt.Println(testMap)
  8. fmt.Println(string(data))

image.png

切片序列化

  1. //切片序列化
  2. var testSlice []map[string]interface{}
  3. m1 := make(map[string]interface{})
  4. m1["大头"] = "good"
  5. m1["二头"] = "bad"
  6. testSlice = append(testSlice,m1)
  7. m2 := make(map[string]interface{})
  8. m2["大f头"] = "good"
  9. m2["二f头"] = "bad"
  10. testSlice = append(testSlice,m2)
  11. fmt.Println(testSlice)
  12. data , err = json.Marshal(testSlice)
  13. fmt.Println(string(data))

image.png

JSON反序列化

image.png

  1. //反序列化操作
  2. //struct
  3. str1 := "{\"Name\":\"大头\",\"Age\":105,\"Birthday\":\"202019951120\",\"Sal\":5000,\"Skill\":\"王八拳\"}"
  4. var monster2 Monster
  5. err = json.Unmarshal([]byte(str1),&monster2)
  6. if err != nil {
  7. fmt.Println("反序列化失败!!")
  8. }
  9. fmt.Println(monster2)
  10. fmt.Println(monster2.Name)
  11. fmt.Println()
  12. //map
  13. str2 := "{\"age\":150,\"name\":\"大头\",\"sex\":\"男\"}"
  14. //反序列化时不需要make,make操作被封装到 Unmarshal 函数中
  15. var map2 map[string]interface{}
  16. err = json.Unmarshal([]byte(str2),&map2)
  17. fmt.Println(map2)
  18. fmt.Println()
  19. //slice
  20. str3 := "[{\"二头\":\"bad\",\"大头\":\"good\"}," +
  21. "{\"二f头\":\"bad\",\"大f头\":\"good\"}]"
  22. //反序列化时不需要make,make操作被封装到 Unmarshal 函数中
  23. var slice2 []map[string]interface{}
  24. err = json.Unmarshal([]byte(str3),&slice2)
  25. fmt.Println(slice2)

image.png
image.png
image.png