golang에서 json 데이터 읽기
4668 단어 golang
// 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",
Age: 18,
}
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)
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.