Le langage Go est désormais devenu un langage très populaire dans le domaine du développement Internet. Il est efficace, concis et facile à utiliser. Il offre également de bonnes performances de concurrence et prend en charge la programmation réseau. Dans le même temps, une autre fonctionnalité intéressante de Golang est qu'il peut gérer les fichiers JSON de manière très pratique. Nous pouvons facilement lire et modifier les fichiers JSON en langage Go.
Dans cet article, je vais vous présenter comment modifier les fichiers JSON dans Golang à l'aide de la bibliothèque standard. Nous apprendrons comment lire les fichiers JSON, comment analyser les données JSON, comment modifier les fichiers JSON dans Golang et réécrire les données modifiées dans le fichier.
Lecture des fichiers JSON
Il est très facile de lire des fichiers JSON en utilisant la bibliothèque standard de Golang. Il suffit d'importer les packagesencoding/json
etio/ioutil
, d'utiliser la fonctionioutil.ReadFile
pour lire le fichier JSON, puis passjson La fonction .Unmarshal
analyse le contenu du fichier au format JSON.encoding/json
和io/ioutil
包,使用ioutil.ReadFile
函数读取JSON文件,然后通过json.Unmarshal
函数将文件内容解析为JSON格式。
例如,我们有一个名为data.json
的JSON文件,其内容如下:
{ "name": "Jerry", "age": 25, "hobbies": ["reading", "running", "swimming"], "address": { "city": "New York", "state": "NY", "zip": "12345" } }
我们可以使用下面的代码读取它:
package main import ( "fmt" "encoding/json" "io/ioutil" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Hobbies []string `json:"hobbies"` Address Address `json:"address"` } type Address struct { City string `json:"city"` State string `json:"state"` Zip string `json:"zip"` } func main() { file, _ := ioutil.ReadFile("data.json") var person Person json.Unmarshal([]byte(file), &person) fmt.Println(person) }
在上面的代码中,我们定义了一个Person
结构体和一个Address
结构体,用于存储JSON文件中的数据。然后通过ioutil.ReadFile
函数读取文件,并用json.Unmarshal
函数解析JSON数据。最后我们打印到控制台输出。
JSON文件中的字段会自动地映射到对应结构体的字段上,此处我们用到了Go语言结构体的标签,来匹配JSON数据中的字段。例如,Name
字段在JSON中的键名是name
,所以我们在结构体中给Name
字段加上了标签json:"name"
。
解析JSON数据
在上一步中,我们已经成功地将JSON文件解析为了一个Go语言结构体对象。但是,在我们修改之前,我们需要了解一下如何从结构体对象中获取和修改数据。
在Golang中,我们使用反射来操作结构体。反射是一种能够在运行时动态地获取程序类型信息和变量值的机制。我们通过反射来获取结构体的字段信息,并修改结构体的字段值。
下面的代码展示了如何使用反射获取Person
结构体中的Name
字段的值并输出:
package main import ( "fmt" "reflect" ) type Person struct { Name string `json:"name"` } func main() { person := Person{ Name: "Jerry", } value := reflect.ValueOf(person) fmt.Println(value.FieldByName("Name").String()) }
在上面的代码中,我们使用了反射包中的ValueOf
函数来获取Person
结构体对象的值,并使用FieldByName
函数获取Name
字段的值。
修改JSON数据
现在我们已经知道了如何读取JSON文件和解析JSON数据,接下来我们将了解如何在Golang中修改JSON数据并将其重新写入JSON文件。
假设我们需要将Name
字段的值从Jerry
修改为Tom
,我们可以像下面这样修改JSON数据:
package main import ( "encoding/json" "fmt" "io/ioutil" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Hobbies []string `json:"hobbies"` Address Address `json:"address"` } type Address struct { City string `json:"city"` State string `json:"state"` Zip string `json:"zip"` } func main() { file, _ := ioutil.ReadFile("data.json") var person Person json.Unmarshal([]byte(file), &person) person.Name = "Tom" newData, _ := json.Marshal(person) ioutil.WriteFile("data.json", newData, 0644) fmt.Println(string(newData)) }
在上面的代码中,我们首先读取了名为data.json
的JSON文件,并使用json.Unmarshal
函数将文件内容解析到一个Person
结构体变量中去。然后我们修改Name
字段的值,将其从Jerry
修改为Tom
。接着我们使用json.Marshal
函数将结构体对象转为JSON字符串,并使用ioutil.WriteFile
data.json
avec le contenu suivant :
rrreee
Nous pouvons le lire en utilisant le code suivant :rrreee
Dans le code ci-dessus, nous APersonne
et une structure
Adresse
sont définies pour stocker les données dans des fichiers JSON. Lisez ensuite le fichier via la fonction
ioutil.ReadFile
et analysez les données JSON à l'aide de la fonction
json.Unmarshal
. Enfin, nous imprimons la sortie sur la console. Les champs du fichier JSON seront automatiquement mappés aux champs de la structure correspondante. Ici, nous utilisons les balises de la structure du langage Go pour faire correspondre les champs des données JSON. Par exemple, le nom de clé du champ
Name
en JSON est
name
, nous ajoutons donc l'étiquette
au champ Name
dans le structure.json:"nom". Analyser les données JSONDans l'étape précédente, nous avons réussi à analyser le fichier JSON dans un objet de structure de langage Go. Cependant, avant de le modifier, nous devons comprendre comment obtenir et modifier les données de l'objet structure. À Golang, nous utilisons la réflexion pour faire fonctionner les structures. La réflexion est un mécanisme qui peut obtenir dynamiquement des informations sur le type de programme et des valeurs de variables au moment de l'exécution. Nous obtenons les informations de champ de la structure par réflexion et modifions les valeurs de champ de la structure. Le code suivant montre comment utiliser la réflexion pour obtenir la valeur du champ
Name
dans la structure
Person
et la sortir : rrreeeDans le code ci-dessus, nous utilisons réflexion Utilisez la fonction
ValueOf
dans le package pour obtenir la valeur de l'objet de structure
Person
et utilisez la fonction
FieldByName
pour obtenir la valeur de Valeur du champ
Nom
. Modifier les données JSONMaintenant que nous savons comment lire les fichiers JSON et analyser les données JSON, nous apprendrons ensuite comment modifier les données JSON dans Golang et les réécrire dans un fichier JSON. Supposons que nous devions changer la valeur du champ
Name
de
Jerry
à
Tom
, nous pouvons modifier les données JSON comme suit : rrreee Dans le code ci-dessus, nous lisons d'abord le fichier JSON nommé
data.json
et utilisons la fonction
json.Unmarshal
pour analyser le contenu du fichier en une
Person<.> variable de structure. Ensuite, nous modifions la valeur du champ Name
de
Jerry
à
Tom
. Ensuite, nous utilisons la fonction
json.Marshal
pour convertir l'objet de structure en chaîne JSON, et utilisons la fonction
ioutil.WriteFile
pour réécrire les données JSON modifiées dans le fichier d'origine. . RésuméDans cet article, nous avons présenté comment manipuler les fichiers JSON dans Golang. Nous avons appris comment lire un fichier JSON, comment analyser les données JSON et comment modifier les données JSON et les réécrire dans le fichier. Golang est très pratique pour traiter les fichiers JSON. Si vous n'êtes pas très familier avec Golang, il est recommandé de pratiquer davantage. La maîtrise de Golang peut grandement améliorer vos compétences et votre expérience en programmation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!