Maison  >  Article  >  développement back-end  >  Comment lire json en golang

Comment lire json en golang

WBOY
WBOYoriginal
2023-05-14 20:56:061614parcourir

Le langage Go est un langage de programmation fortement typé, souvent utilisé pour la programmation réseau et le traitement du Big Data. En tant que format d'échange de données léger, JSON est largement utilisé dans la transmission et la réception de données dans le cadre de la transmission réseau. La lecture de données JSON est une tâche très courante en langage Go. Eh bien, dans cet article, nous présenterons comment utiliser Golang pour lire les données JSON.

1. Utilisation des structures JSON dans Golang

Dans Golang, vous pouvez utiliser des structures pour définir le format JSON, puis utiliser la fonction json.Unmarshal() pour analyser les données JSON et lire les tableaux JSON. Le code suivant montre comment lire un tableau à partir de données JSON.

package main
import (
    "encoding/json"
    "fmt"
)
type Book struct {
    Title  string `json:"title"`
    Author string `json:"author"`
    Price  string `json:"price"`
}
func main() {
    jsonData := `[{"title":"Golang实战开发","author":"张三","price":"100元"},
                  {"title":"深入浅出Go","author":"李四","price":"80元"}]`
    var books []Book
    json.Unmarshal([]byte(jsonData), &books)
    for _, book := range books {
        fmt.Println("Book Title: ", book.Title)
        fmt.Println("Book Author: ", book.Author)
        fmt.Println("Book Price: ", book.Price)
    }
}

Dans le code ci-dessus, nous définissons d'abord une structure Book pour représenter les informations d'attribut de chaque livre. Cette structure utilise la balise json pour lier les champs JSON afin de garantir que nous pouvons lire correctement les données JSON.

Ensuite, nous montrons comment analyser une chaîne JSON dans une tranche de type Book. Dans le code, nous créons d'abord une tranche vide pour enregistrer les données analysées. Nous appelons ensuite la fonction json.Unmarshal(), en lui passant les données JSON et un pointeur vers la tranche vide que nous avons créée. À ce stade, la fonction analysera automatiquement la chaîne JSON et analysera les données dans une tranche de type Book. json.Unmarshal()函数,并向其传递JSON数据和指向我们创建的空slice的指针。此时,该函数将会自动解析JSON字符串,并将数据解析为Book类型的slice。

最后,我们遍历刚刚解析出来的slice,并将每本书的属性信息打印到终端中。当我们运行该程序时,可以看到以下输出结果:

Book Title:  Golang实战开发
Book Author:  张三
Book Price:  100元
Book Title:  深入浅出Go
Book Author:  李四
Book Price:  80元

二、使用Interface{}读取JSON数据

在某些场景下,我们并不知道JSON数据的具体结构,此时,我们可以使用interface{}类型的变量来处理JSON数据。下面的代码演示了如何使用interface{}类型来读取未知结构的JSON对象。

package main
import (
    "encoding/json"
    "fmt"
)
func main() {
    jsonData := `{"name":"张三","age":20}`
    var unknown map[string]interface{}
    json.Unmarshal([]byte(jsonData), &unknown)
    for key, value := range unknown {
        fmt.Printf("%v : %v
", key, value)
    }
}

在上面的例子中,我们使用了一个interface{}类型的map来接收未知结构的JSON数据,这样就不需要提前定义结构体了。json.Unmarshal()

Enfin, nous parcourons la tranche que nous venons d'analyser et imprimons les informations d'attribut de chaque livre sur le terminal. Lorsque nous exécutons le programme, nous pouvons voir le résultat suivant :

name : 张三
age : 20

2. Utilisez Interface{} pour lire les données JSON

Dans certains scénarios, nous ne connaissons pas la structure spécifique des données JSON. Pour le moment, nous pouvons utiliser. variables de type interface{} pour traiter les données JSON. Le code suivant montre comment utiliser le type interface{} pour lire un objet JSON de structure inconnue.

package main
import (
    "encoding/json"
    "fmt"
)
func main() {
    jsonData := `{"name":"张三","age":20}`
    var unknown interface{}
    json.Unmarshal([]byte(jsonData), &unknown)
    m := unknown.(map[string]interface{})
    fmt.Println(m["name"], m["age"])
}

Dans l'exemple ci-dessus, nous utilisons une carte de type interface{} pour recevoir des données JSON de structure inconnue, il n'est donc pas nécessaire de définir la structure à l'avance. La fonction json.Unmarshal() analyse la chaîne JSON en une variable de type map[string]interface{} et utilise une boucle for pour parcourir la variable et afficher respectivement ses clés et ses valeurs. Lorsque nous exécutons le programme, nous pouvons voir le résultat suivant :

张三 20

3. Utilisez des types non structurels pour lire les données JSON

De plus, lorsque nous traitons de petits objets JSON ou n'avons besoin de lire qu'une partie des données, cela may Au lieu de définir d'abord une structure, il vous suffit de définir une variable de valeur, puis d'analyser la chaîne JSON directement dans la variable. Le code suivant montre comment utiliser des types non structurés pour lire des objets JSON.

rrreee

Dans le code ci-dessus, nous utilisons une variable de type interface{} pour recevoir des données JSON et utilisons l'assertion de type pour la convertir en type map[string]interface{}. Ensuite, nous avons supprimé les champs « nom » et « âge » de la carte et imprimé le résultat. 🎜🎜Lorsque nous exécutons le programme, nous pouvons voir le résultat suivant : 🎜rrreee🎜Résumé🎜🎜La lecture des données JSON dans Golang est une chose très pratique. L'utilisation d'une structure pour définir le format JSON peut rendre le programme plus clair. L'utilisation de variables de type interface{} peut recevoir des données JSON de structure inconnue, tandis que l'utilisation de types non structurels peut simplifier le code et améliorer l'efficacité d'exécution du programme. Bien entendu, les trois méthodes ci-dessus de lecture des données JSON ont leurs avantages et leurs inconvénients, et nous pouvons choisir de manière flexible la méthode correspondante en fonction de différents scénarios. 🎜

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