Les données JSON peuvent être enregistrées dans une base de données MySQL en utilisant la bibliothèque gjson ou la fonction json.Unmarshal. La bibliothèque gjson fournit des méthodes pratiques pour analyser les champs JSON, et la fonction json.Unmarshal nécessite un pointeur de type cible pour désorganiser les données JSON. Les deux méthodes nécessitent la préparation d'instructions SQL et l'exécution d'opérations d'insertion pour conserver les données dans la base de données.
Comment enregistrer des données JSON dans une base de données dans Golang
Introduction
Dans Golang, enregistrer des données JSON dans une base de données est une tâche courante. Cet article explorera différentes méthodes de persistance des données JSON à l'aide de bases de données couramment utilisées telles que MySQL, et fournira des exemples pratiques à titre de référence.
Utiliser la bibliothèque gjson
La bibliothèque gjson est un package Golang populaire pour analyser et manipuler les données JSON. Il fournit des méthodes simples pour analyser les données JSON dans des structures de données Go telles que des cartes et des tranches.
package main import ( "database/sql" "encoding/json" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/tidwall/gjson" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { panic(err) } defer db.Close() jsonData := `{ "name": "John Doe", "age": 30, "address": { "street": "Main Street", "city": "New York" } }` values := []interface{}{} // 解析 JSON 字段 name := gjson.Get(jsonData, "name").String() age := gjson.Get(jsonData, "age").Int() address := gjson.Get(jsonData, "address").String() values = append(values, name, age, address) // 准备 SQL 语句 stmt, err := db.Prepare("INSERT INTO users (name, age, address) VALUES (?, ?, ?)") if err != nil { panic(err) } // 执行插入操作 _, err = stmt.Exec(values...) if err != nil { panic(err) } fmt.Println("JSON data saved to database successfully") }
Utilisation de json.Unmarshal
La fonction json.Unmarshal fait partie de la bibliothèque standard Golang et est utilisée pour décomposer les données JSON en variables Go. Cette méthode nécessite un pointeur de type cible comme deuxième paramètre.
package main import ( "database/sql" "encoding/json" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { panic(err) } defer db.Close() jsonData := `{ "name": "John Doe", "age": 30, "address": { "street": "Main Street", "city": "New York" } }` var user struct { Name string Age int Address string } err = json.Unmarshal([]byte(jsonData), &user) if err != nil { panic(err) } // 准备 SQL 语句 stmt, err := db.Prepare("INSERT INTO users (name, age, address) VALUES (?, ?, ?)") if err != nil { panic(err) } // 执行插入操作 _, err = stmt.Exec(user.Name, user.Age, user.Address) if err != nil { panic(err) } fmt.Println("JSON data saved to database successfully") }
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!