[英]how to parse string to go struct and write to file
我想解析字符串中的學校數組,並想使用 golang 寫入文件。 讓我們假設我有一個稱為數據的字符串;
{
"name": "alex",
"schools": [
{"location": "xxx" , "year": 2012},
{"location": "xxx" , "year": 2012},
]
}
我想解析它並將學校寫入文件。
為了達到它。 我首先寫一個結構體;
type User struct{
name string `json:"name"`
Schools []struct {
Location string
Year int
}
}
然后創建一個變量並嘗試將字符串解析為,
var u User
err := json.Unmarshal([]byte(data), &u)
_, err = createdFile.Write(u.Schools)
但這給了我錯誤
cannot use m (type User) as type []byte in argument to createdFile.Write
我該怎么做? 我的錯誤在哪里?
我發現了以下兩個問題:
type []struct { Location string Year int }
而不是[]byte
type []struct { Location string Year int }
u.Schools
所以這是我的解決方案。 由於您沒有提供createdFile.Write()
詳細信息,我在這里使用了ioutil
包。
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
var data = `{
"name": "alex",
"schools": [
{"location": "xxx" , "year": 2012},
{"location": "xxx" , "year": 2012}
]
}`
type User struct {
Name string `json:"name"`
Schools []struct {
Location string
Year int
}
}
func main() {
var (
u User
err error
schoolsBytes []byte
)
if err = json.Unmarshal([]byte(data), &u); err != nil {
log.Fatalln(err)
}
fmt.Println(u.Schools)
schoolsBytes, err = json.Marshal(u.Schools)
if err != nil {
log.Fatalln(err)
}
err = ioutil.WriteFile("/tmp/dat1", schoolsBytes, 0777)
if err != nil {
log.Fatalln(err)
}
dat, err := ioutil.ReadFile("/tmp/dat1")
if err != nil {
log.Fatalln(err)
}
fmt.Print(string(dat))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.