Go語言的json解析庫有很多,包括標準庫自帶的encoding/json、第三方庫json-iterator/go、ffjson等。本文將對它們進行比較分析。
首先是encoding/json,它是Go語言自帶的json解析庫,功能強大,但解析速度較慢。具體例子如下:
type User struct { Name string `json:"name"` Age int `json:"age"` Birthday string `json:"birthday"` } func main() { jsonString := `{"name": "tom", "age": 18, "birthday": "2000-01-01"}` var user User if err := json.Unmarshal([]byte(jsonString), &user); err != nil { panic(err) } fmt.Println(user) }
第三方庫json-iterator/go是一個高性能的json解析庫,速度比encoding/json快5倍以上。它也支持decode和encode兩種方式,具體示例如下:
type User struct { Name string `json:"name"` Age int `json:"age"` Birthday string `json:"birthday"` } func main() { jsonString := `{"name": "tom", "age": 18, "birthday": "2000-01-01"}` var user User iter := jsoniter.ConfigCompatibleWithStandardLibrary if err := iter.Unmarshal([]byte(jsonString), &user); err != nil { panic(err) } fmt.Println(user) }
另一個第三方庫ffjson可以通過代碼生成提高解析速度,但需要用到代碼生成工具ffjson。
綜合來看,如果對速度要求較高,可以考慮采用json-iterator/go庫;如果對速度要求不那么高,可以使用Go標準庫自帶的encoding/json。
上一篇vue實現跨域