go语言学习3-json转换

突然想起go语言怎么进行json转换

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string `json:"name"` //加Tag,转json将Name替换为name
	Sex  string `json:"-"`    //加Tag,转json和json转类型 "-",都不输出该字段
	Age  int
}

func main() {
	p := Person{"tom", "man", 23}
	ToJSON1(p)

	ToJSON2(p)

	ToObejct("{\"name\":\"hello\",\"Sex\":\"man\",\"Age\":32}")
}

//ToJSON1 进行转json
func ToJSON1(p Person) {
	buf, err := json.Marshal(p) //将结构体Person类型进行转json,返回byte
	if err != nil {
		fmt.Println("convert json failed: ", err)
		return
	}
	fmt.Println(buf)
	fmt.Println("json1=", string(buf))
}

//ToJSON2 对json进行格式化,方便阅读
//第二个参数对json的"{" "}"位置调整,可以用空格 \t
//第三个参数对结构内的字段位置调整,可以用空格 \t
func ToJSON2(p Person) {
	buf, err := json.MarshalIndent(p, "", "")
	if err != nil {
		fmt.Println("convert json failed:", err)
		return
	}
	fmt.Println("format json=", string(buf))
}

//ToObejct 将字符串转Person
func ToObejct(str string) {
	buf := []byte(str)
	var p Person
	err := json.Unmarshal(buf, &p)
	if err != nil {
		fmt.Println("convert Person failed:", err)
		return
	}
	fmt.Printf("p.Name=%s  p.Age=%d\n", p.Name, p.Age)
}

go语言进行json转换

秋风 2018-10-13