123

标准json模块

一般可以使用json.Marsha1和json.Unmarsha1来序列化和反序列化字符串。

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. func main() {
  7. //定义一个s1切片
  8. s1 := []string{"chinese", "japan", "france", "italy"}
  9. fmt.Println("原字符串:", s1)
  10. s2, _ := json.Marshal(s1) //序列化,此时s2是字节,uint8类型
  11. fmt.Println("序列化后的结果:", string(s2))
  12. var s3 []string
  13. json.Unmarshal([]byte(s2), &s3) //反序列化,这里不能直接用s3简短声明
  14. fmt.Println("反序列化后的结果:", s3)
  15. }

image.png
加上结构体:

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. type Phone struct {
  7. //这里要大写,需要跨包到json包
  8. Name string
  9. Price int
  10. }
  11. func main() {
  12. //初始化结构体
  13. phone := Phone{
  14. Name: "iphone",
  15. Price: 5000,
  16. }
  17. //打印原字符
  18. fmt.Println("结构体:", phone)
  19. //序列化
  20. s1, _ := json.Marshal(phone)
  21. fmt.Println("序列化后的结果:", string(s1))
  22. //反序列化
  23. s2 := Phone{}
  24. json.Unmarshal(s1, &s2)
  25. fmt.Println("反序列化后的结果:", s2)
  26. }

image.png