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))
}
版权声明:本文为double_happiness原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。