编程中,我们很常会把数据以json格式保存在文件中或者读取json文件,golang有内置对json数据的处理包 encoding/json
// file name: test.go
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
type User struct {
Name string
Age int8
}
func testMarshal() []byte {
user := User{
Name: "Tab",Age: 18,}
data,err := json.Marshal(user)
if err != nil {
log.Fatal(err)
}
return data
}
func testUnmarshal(data []byte) {
var user User
err := json.Unmarshal(data,&user)
if err != nil {
log.Fatal(err)
}
fmt.Println(user)
}
func testRead() []byte {
fp,err := os.OpenFile("./data.json",os.O_RDONLY, 0755)
defer fp.Close()
if err != nil {
log.Fatal(err)
}
data := make([]byte, 100)
n,err := fp.Read(data)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data[:n]))
return data[:n]
}
func testWrite(data []byte) {
fp,err := os.OpenFile("data.json",os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
log.Fatal(err)
}
defer fp.Close()
_,err = fp.Write(data)
if err != nil {
log.Fatal(err)
}
}
func main() {
var data []byte
data = testMarshal()
fmt.Println(string(data))
testWrite(data)
data = testRead()
testUnmarshal(data)
}
这段代码主要是先对数据进行序列化然后保存到文件中,再从文件中读取json数据进行反序列化。
据说 json-iteator 是目前golang中对json格式数据处理最快的包(比官方json包快6倍),好像是滴滴团队开源的,使用起来也非常方便,有兴趣的可以学习学习,下面我们看看官方的示例代码,使用起来也是很方便
package main
import "github.com/json-iterator/go"
type User struct {
Name string
Age int8
}
func main() {
user := User{
Name: "tanggu",}
var jsoniter = jsoniter.ConfigCompatibleWithStandardLibrary
// 序列化
data,err := jsoniter.Marshal(&user)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data))
// 反序列化
var people User
err = jsoniter.Unmarshal(data,&people)
if err != nil {
log.Fatal(err)
}
fmt.Println(people)
}
原文链接:https://www.f2er.com/go/187274.html