go語言中官方提供了一種轉換json數據的庫,然而大多數情況下使用起來并不便捷。因此,我們可以使用其他開源庫作為json轉換工具。
一個非常流行的庫是"jsoniter",它可以被看作官方庫的更好版本。使用jsoniter需要先安裝,可在終端中運行下列命令:
go get github.com/json-iterator/go
使用jsoniter的方式和官方庫極為相似。在導入jsoniter后,只需要使用"jsoniter.Unmarshal"和"jsoniter.Marshal"兩個函數即可。例如:
import "github.com/json-iterator/go"
type Person struct {
Name string
Age int
}
func main() {
jsonStr := `{"Name":"Bob", "Age":30}`
//Unmarshal
var p Person
err := jsoniter.Unmarshal([]byte(jsonStr), &p)
if err != nil {
fmt.Println(err)
return
}
//Marshal
newJson, err := jsoniter.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(newJson))
}
在這個例子中,我們定義了一個Person結構體,并使用jsoniter將一個json字符串轉換成一個Person對象。
使用jsoniter的好處之一是它會根據go語言的類型自動推斷出json字段的類型。因此,不需要使用"omitempty"來刪除空字段。
總的來說,jsoniter比官方json轉換庫更快、更靈活、更方便使用,也是我們推薦的json轉換工具。