Maison  >  Article  >  développement back-end  >  golang modifier le fichier json

golang modifier le fichier json

王林
王林original
2023-05-10 18:54:07930parcourir

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 packages encoding/json et io/ioutil, d'utiliser la fonction ioutil.ReadFile pour lire le fichier JSON, puis pass json La fonction .Unmarshal analyse le contenu du fichier au format JSON. encoding/jsonio/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

Par exemple, nous avons un fichier JSON appelé data.json avec le contenu suivant :

rrreee

Nous pouvons le lire en utilisant le code suivant :

rrreee

Dans le code ci-dessus, nous A Personne 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 <code>Name dans le structure.json:"nom". 🎜🎜Analyser les données JSON🎜🎜Dans 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 : 🎜rrreee🎜Dans 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 JSON🎜🎜Maintenant 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 <code>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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn