Golang 对json文件进行操作
🕙2023-02-10
写JSON文件
func main() {
// 创建文件
filePtr, err := os.Create("info.json")
if err != nil {
fmt.Println("文件创建失败", err.Error())
return
}
defer filePtr.Close()
// 创建Json编码器
encoder := json.NewEncoder(filePtr)
err = encoder.Encode(info)
if err != nil {
fmt.Println("编码错误", err.Error())
} else {
fmt.Println("编码成功")
}
}
读 JSON 文件
func main() {
filePtr, err := os.Open("./info.json")
if err != nil {
fmt.Println("文件打开失败 [Err:%s]", err.Error())
return
}
defer filePtr.Close()
var info []Website
// 创建json解码器
decoder := json.NewDecoder(filePtr)
err = decoder.Decode(&info)
if err != nil {
fmt.Println("解码失败", err.Error())
} else {
fmt.Println("解码成功")
fmt.Println(info)
}
}
修改JSON文件
// 1. 将json文件内容粘贴到上面链接中,自动转成Golang结构体
// 2. "_"代表"error"
type MyJsonStruct struct {
...
}
var myJsonStruct MyJsonStruct
bytes, _ := ioutil.ReadFile(jsonFile)
_ = json.Unmarshal(bytes, &myJsonStruct)
操作结构体...
// 最后面4个空格,让json格式更美观
result, _ := json.MarshalIndent(myJsonStruct, "", " ")
_ = ioutil.WriteFile(jsonFile, result, 0644)