go对json的相关操作
LYT
首页
分类
标签
项目
留言
友链
关于

go对json的相关操作

2023年4月27日18时52分
2023年4月27日19时10分
golang
golang
浏览量:
总浏览量:
0

go语言读写json文件封装成struct

先声明一个结构体

type Type struct{ 属性1 string 属性2 int }

读文件的函数

//Type返回值类型 func Read() Type { filePtr, err := os.Open("*json文件路径*") if err != nil { fmt.Println("文件打开失败 [Err:%s]", err.Error()) } defer filePtr.Close() var data ReturnType // 创建json解码器 decoder := json.NewDecoder(filePtr) err = decoder.Decode(&list) if err != nil { fmt.Println("解码失败", err.Error()) } else { fmt.Println("解码成功") } return data }

写文件的函数,这里如果如果已经存在info.json,会覆盖原本的文件,也可以调用os.Open方法

func Write(data Type) { // 创建文件 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(&list) if err != nil { fmt.Println("编码失败", err.Error()) } else { fmt.Println("编码成功") } }

go语言struct与json相互转换

struct转json

func encode(stu Stu, str *string) { // 返回的是一个byte数组 jsontype, _ := json.Marshal(stu) // 强制转换为字符串 *str = string(jsontype) }

json转struct

func decode(str string, stu *Stu) { json.Unmarshal([]byte(str), stu) }

在main函数调用

func main() { stu := Stu{ Name: "赵梓鈞", Id: 444, } var result string // 调用序列化方法 encode(stu, &result) str := `{"Name":"李存礼","Id":444}` var sutd Stu // 调用反序列化方法 decode(str, &sutd) }