下面我将详细讲解一下使用 Golang 中的 json 包实现增删查改的实现示例。
增删查改简介
增删查改是非常基本的 CRUD 操作,即创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。在 web 应用开发中,这些操作是必不可少的,而 json 格式是 web 应用开发中经常用到的数据格式。
在 Golang 中,我们可以使用 encoding/json
包来对 json 数据进行序列化和反序列化。
增
在 Golang 中,我们可以使用结构体来表示 json 格式的数据,例如创建一个名为 Person 的结构体表示人物信息:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Phone string `json:"phone"`
}
接着,我们可以创建一个 json 文件来存储多个 Person 组成的列表,如下所示:
[
{
"name": "John",
"age": 25,
"phone": "123456"
},
{
"name": "David",
"age": 30,
"phone": "789012"
}
]
要想实现增加新的 Person 的功能,我们可以将 json 文件读取到一个 []Person
列表中,将新建的 Person 结构体添加到列表中,然后再将列表写回到 json 文件中。具体实现可以参考以下代码:
package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Phone string `json:"phone"`
}
func main() {
// 读取 json 文件并反序列化为 []Person
file, _ := os.Open("./persons.json")
defer file.Close()
reader := bufio.NewReader(file)
content, _ := ioutil.ReadAll(reader)
var persons []Person
_ = json.Unmarshal(content, &persons)
// 添加新的 Person 到列表中
newPerson := Person{Name: "Mary", Age: 20, Phone: "135792"}
persons = append(persons, newPerson)
// 将列表序列化为 json 并写回到文件中
bytes, _ := json.MarshalIndent(persons, "", " ")
_ = ioutil.WriteFile("./persons.json", bytes, 0644)
fmt.Println("Add new person success!")
}
以上代码会将名为 "Mary"、年龄为 20、电话为 "135792" 的 Person 添加到 json 文件中并输出 "Add new person success!"。
删
为了实现删除一个 Person 的功能,我们需要先选择一个要删除的 Person,并将其从列表中删除,最后再将列表序列化后写回到 json 文件中。具体实现可以参考以下代码:
package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Phone string `json:"phone"`
}
func main() {
// 读取 json 文件并反序列化为 []Person
file, _ := os.Open("./persons.json")
defer file.Close()
reader := bufio.NewReader(file)
content, _ := ioutil.ReadAll(reader)
var persons []Person
_ = json.Unmarshal(content, &persons)
// 获取想要删除的 Person 的下标
var index int
for i, person := range persons {
if person.Name == "Mary" {
index = i
break
}
}
// 从切片中删除对应的元素
persons = append(persons[:index], persons[index+1:]...)
// 写回到 json 文件中
bytes, _ := json.MarshalIndent(persons, "", " ")
_ = ioutil.WriteFile("./persons.json", bytes, 0644)
fmt.Println("Delete person success!")
}
以上代码会删除名为 "Mary" 的 Person 并输出 "Delete person success!"。
总结
以上就是使用 Golang 中的 json 包实现增删查改的完整攻略。我们可以通过将 json 文件读取到 Golang 中,对数据进行操作后再写回到文件中,实现基本的增删查改操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang使用json格式实现增删查改的实现示例 - Python技术站