Go 解析json
xml, yaml解析的用法类似
xml 使用库
encodeing/xml
yaml 使用库
gopkg.in/yaml.v2
JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析
序列化
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
Sex string
}
func main() {
p := &Person{
Name: "John",
Age: 24,
Sex: "man",
}
// data, _ := json.MarshalIndent(p, "", " ") 格式化
data, _ := json.Marshal(p)
fmt.Println(string(data))
}
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"-"`
Sex string `json:"sex,omitempty"`
}
// 解析的时候忽略该字段。默认情况下会解析这个字段,因为它是大写字母开头的
// Field int `json:"-"`
// 解析(encode/decode) 的时候,使用 `other_name`,而不是 `Field`
// Field int `json:"other_name"`
// 解析的时候使用 `other_name`,如果struct 中这个值为空,就忽略它
// Field int `json:"other_name,omitempty"
func main() {
persons := []Person{
Person{
Name: "John",
Age: 24,
Sex: "man",
},
Person{
Name: "Anna",
Age: 22,
},
}
data, _ := json.Marshal(persons)
fmt.Println(string(data))
}
反序列化
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Sex string `json:"sex,omitempty"`
}
func main() {
pJson := `{"name":"John","Age":24,"Sex":"man"}`
p := &Person{}
err := json.Unmarshal([]byte(pJson), p)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(p.Name)
}
func main() {
pJson := `[{"name":"John","sex":"man"},{"name":"Anna","age":24}]`
p := []Person{}
err := json.Unmarshal([]byte(pJson), &p)
if err != nil {
log.Fatal(err.Error())
}
fmt.Println(p)
}
Last updated
Was this helpful?