淘先锋技术网

首页 1 2 3 4 5 6 7

Go语言的json库非常丰富,可以满足各种场景下的json解析需求。本文将介绍几种常用的json解析方法。

1. 使用标准库encoding/json

import (
"encoding/json"
"fmt"
)
type User struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
jsonStr := `{"name":"Tom","age":18}`
var user User
if err := json.Unmarshal([]byte(jsonStr), &user); err != nil {
panic(err)
}
fmt.Printf("Name: %s, Age: %d", user.Name, user.Age)
}

2. 使用第三方库easyjson

import (
"fmt"
"github.com/mailru/easyjson"
)
type User struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func (u *User) UnmarshalJSON(data []byte) error {
return easyjson.Unmarshal(data, u)
}
func main() {
jsonStr := `{"name":"Tom","age":18}`
var user User
if err := json.Unmarshal([]byte(jsonStr), &user); err != nil {
panic(err)
}
fmt.Printf("Name: %s, Age: %d", user.Name, user.Age)
}

3. 使用第三方库jsoniter

import (
"fmt"
"github.com/json-iterator/go"
)
type User struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
jsonStr := `{"name":"Tom","age":18}`
var user User
if err := jsoniter.Unmarshal([]byte(jsonStr), &user); err != nil {
panic(err)
}
fmt.Printf("Name: %s, Age: %d", user.Name, user.Age)
}

以上三种方法中,标准库encoding/json的兼容性最好但效率相对较低,第三方库easyjson和jsoniter的效率更高但对一些特殊场景的处理可能存在限制,根据具体需求选用即可。