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)
}
秋风
2018-10-13