Go格式化输出

1、GO数据类型转化为JSON类型

函数原型:

func Unmarshal(data []byte, v interface{}) err

GO数据类型输出为JSON类型示例

package main

import (
	"encoding/json"
	"fmt"
)

type Test struct{
	Name string
	Age  int
	Phone string
	Addres string
}

func main()  {
	var name  = "xiaoming"
	var age = 13
	var phone = "23243234"
	var add = "beijing"
	t := &Test{name,age,phone,add}
	b, err := json.Marshal(t)
	if err != nil {
		fmt.Println("Marshal fail")
	}
	fmt.Println(b)
	fmt.Println(string(b))
}

2、JSON类型转化为GO数据类型

函数原型:

func Marshal(v interface{})([]byte, error)

JSON类型输出为Go数据类型示例

package main

import (
	"encoding/json"
	"fmt"
)

func main ( ) {
	var jsonBlob = [ ] byte ( ` [ 
        { "Name" : "Platypus" , "Order" : "Monotremata" } , 
        { "Name" : "Quoll" ,     "Order" : "Dasyuromorphia" } 
    ] ` )
	type Animal struct {
		Name  string
		Order string
	}
	var animals [ ] Animal
	err := json. Unmarshal ( jsonBlob , & animals )
	if err != nil {
		fmt. Println ( "error:" , err )
	}
	fmt. Println( animals )
}

结构体字段标签

json包在解析结构体时,如果遇到key为json的字段标签,则会按照一定的规则解析该标签:第一个出现的是字段在JSON串中使用的名字,之后为其它选项,指定的空值字段不出现在JSON中,如果整个value为"-",则不解析该字段,例如见上述结构体修改为如下:

type Test struct{
	Name string		`json:"name,omitempty"`
	Age  int		`json:"age"`
	Phone string        `json:"-"`
	Address string        `json:"add"`
}


func main()  {
	var name  = "xiaoming"
	var age = 13
	var phone = "23243234"
	var add = "beijing"
	t := &Test{name,age,phone,add}
	b, err := json.Marshal(t)
	if err != nil {
		fmt.Println("Marshal fail")
	}
	fmt.Println(b)
	fmt.Println(string(b))
}

 

你可能感兴趣的:(go学习)