Golang 与 Json

序列化:把go语言中的结构体变量 --> json格式的字符串

b, err := json.Marshal(p1)

反序列化:json格式的字符串 --> go语言中的能够识别的结构体变量

json.Unmarshal(b, &p2)  // 传递指针可以在函数内部修改p2值

示例:

package main

import (
   "encoding/json"
   "fmt"
)

// 结构体 <——> json格式

// 序列化:把go语言中的结构体变量 --> json格式的字符串
// 反序列化:json格式的字符串 --> go语言中的能够识别的结构体变量

// 首字母大写 : because 被 json包调用
// 特定格式 双引号内为被json序列化后的名称
type person struct {
   Name   string  `json:"name"`
   Age    int     `json:"age"`
   Grades float64 `json:"grades"`
}

func main() {
   p1 := person{
      Name:   "侠奢",
      Age:    18,
      Grades: 59.9,
   }

   // 序列化:将person类型变量转换为json格式
   b, err := json.Marshal(p1)
   if err != nil {
      fmt.Printf("marshal failed, err:%v", err)
      return
   }
   fmt.Printf("%v\n", string(b))

   // 反序列化:将json转换为person类型变量
   var p2 person
   json.Unmarshal(b, &p2) // 传递指针可以在函数内部修改p2值
   fmt.Printf("%#v\n", p2)

   str := `{"name":"猪头","age":16,"grades":99}`

   var p3 person
   json.Unmarshal([]byte(str), &p3)  // 第一个参数为[]byte
   fmt.Printf("%#v\n", p3)
}

猜你喜欢

转载自www.cnblogs.com/newbase/p/12790613.html