golang 中对json数据读写
发布时间:2020-12-16 19:12:59 所属栏目:大数据 来源:网络整理
导读:编程中,我们很常会把数据以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 test
编程中,我们很常会把数据以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)
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |