Go語言map與json串相互轉化


1、Go語言map與json串相互轉化

  • map轉為Json串(本質是string),先把map轉為byte數組,再把byte數組轉為Json串
  • Json串(本質是string)轉為map,先把Json串轉為byte數組,再把byte數組轉為map
package main

import (
   "encoding/json"
   "fmt"
)

func main() {
   //map轉為json串(本質是string)
   //先把map轉為byte數組
   //再把byte數組轉為json串
   DataMap := map[string]int{"a": 1, "b": 2, "c": 3}
   marshal, err := json.Marshal(DataMap)
   if err != nil {
      fmt.Printf("Map轉化為byte數組失敗,異常:%s\n", err)
      return
   }
   fmt.Printf("Map轉化為byte數組成功:%v\n", marshal)
   fmt.Printf("byte數組轉化為Json串成功:%s\n", string(marshal))

   //json串(本質是string)轉為map
   //先把json串轉為byte數組
   //再把byte數組轉為map
   dataStr := `{"a":1,"b":2,"c":3}`
   var dataMap map[string]int
   err = json.Unmarshal([]byte(dataStr), &dataMap)
   if err != nil {
      fmt.Printf("Json串轉化為Map失敗,異常:%s\n", err)
      return
   }
   fmt.Printf("Json串(本質是string)轉化為Map成功:%v", dataMap)
}
image-20211201111303306

2、結構體或者結構體數組轉為Json串

package main

import (
   "encoding/json"
   "fmt"
)

type S struct {
   Name string `json:"name,omitempty"`
   Age  int    `json:"age,omitempty"`
   Sex  string `json:"sex,omitempty"`
}

func main() {
   s := S{
      Name: "小紅",
      Age:  18,
      Sex:  "女",
   }
   marshal, err := json.Marshal(s)
   if err != nil {
      return
   }
   fmt.Println(string(marshal))

   sList := []S{{
      Name: "小紅",
      Age:  18,
      Sex:  "女",
   }, {
      Name: "小李",
      Age:  20,
      Sex:  "男",
   }, {
      Name: "夏龍",
      Age:  18,
      Sex:  "女",
   }}
   marshal, err = json.Marshal(sList)
   if err != nil {
      return
   }
   fmt.Println(string(marshal))
}

image-20211202163109934


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM