当我们需要解析JSON格式数据时,Golang提供了三种方法:
- 使用encoding/json包
- 使用第三方库github.com/tidwall/gjson
- 使用第三方库github.com/json-iterator/go
1. encoding/json包解析JSON数据
在Golang中,我们可以使用标准库中的encoding/json包来解析JSON数据。它提供了Unmarshal方法,可以将JSON格式数据解析成结构体变量或者map变量类型。
示例代码:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
str := `{"name": "Tom", "age": 20}`
var p Person
err := json.Unmarshal([]byte(str), &p)
if err != nil {
fmt.Println("unmarshal failed:", err)
return
}
fmt.Println("name:", p.Name)
fmt.Println("age:", p.Age)
// 输出结果:
// name: Tom
// age: 20
}
2. github.com/tidwall/gjson解析JSON数据
github.com/tidwall/gjson是一个高性能的JSON解析库,它的优点是不需要反序列化,速度快。
示例代码:
package main
import (
"fmt"
"github.com/tidwall/gjson"
)
func main() {
str := `{"name": "Tom", "age": 20}`
name := gjson.Get(str, "name")
age := gjson.Get(str, "age")
fmt.Println("name:", name.String())
fmt.Println("age:", age.Int())
// 输出结果:
// name: Tom
// age: 20
}
3. github.com/json-iterator/go解析JSON数据
github.com/json-iterator/go的特点是速度快,使用方式跟encoding/json包一样,只需要用jsoniter替换掉json。
示例代码:
package main
import (
"fmt"
"github.com/json-iterator/go"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
str := `{"name": "Tom", "age": 20}`
var p Person
jsoniter.Unmarshal([]byte(str), &p)
fmt.Println("name:", p.Name)
fmt.Println("age:", p.Age)
// 输出结果:
// name: Tom
// age: 20
}
以上三种方法均可以较为容易地解析JSON格式的数据。具体使用时,可以根据实际情况选择适合自己的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Golang实现解析JSON的三种方法总结 - Python技术站