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的效率更高但对一些特殊场景的处理可能存在限制,根据具体需求选用即可。