GOGOUP-13. tag和json

万丈高楼平地起-Tag和JSON

一、Tag

  1. tag的基本用法
    package main
    
    import (
    	"fmt"
    	"reflect"
    )
    
    //定义个一个结构体
    type Stu struct {
    	//添加两个标签 info 标签名称name doc标签名 My Name 注意两个标签中间空格分隔
    	Name string `info:"name" doc:"MyName"`
    	//添加一个标签 info 名称 sex
    	Sex int `info:"sex"`
    }
    
    func findTag(arg interface{}) {
    	t := reflect.TypeOf(arg)
    	for i := 0; i < t.NumField(); i++ {
    		tagInfo := t.Field(i).Tag.Get("info")
    		tagDoc := t.Field(i).Tag.Get("doc")
    		fmt.Println("info: ", tagInfo, "tagDoc: ", tagDoc)
    	}
    }
    
    func main() {
    	var stu Stu = Stu{}
    	findTag(stu)
    
    }
    
    
  2. 执行结果
    GOGOUP-13. tag和json

二、JSON

  1. JSON 的基本用法
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type Stu struct {
    	Name     string   `json:"name"`
    	Age      int      `json:"age"`
    	Mobile   string   `json:"phone"`
    	Teachers []string `json:"teachers"`
    }
    
    func main() {
    
    	stu := Stu{"小明", 18, "123333", []string{"老吴", "老虎"}}
    	//编码成json
    	json_str, err := json.Marshal(stu)
    	if err != nil {
    		fmt.Println("json.Marshal error: ", err)
    		return
    	}
    	fmt.Printf("%s\n", json_str)
    
    	//解码成对象
    	stu1 := Stu{}
    	err = json.Unmarshal(json_str, &stu1)
    	if err != nil {
    		fmt.Println("json.Unmarshal error: ", err)
    		return
    	}
    
    	fmt.Printf("%v\n", stu1)
    }
    
    
  2. 执行结果
    GOGOUP-13. tag和json
上一篇:GOGOUP-8.数组和切片


下一篇:Day——06