


Bagaimana untuk berinteraksi dengan data JSON menggunakan SQL dalam Golang?
在 Golang 中通过 SQL 与 JSON 数据交互共有以下步骤:使用 json.Unmarshal 函数将 JSON 数据解析为 Go 结构体,实现 JSON 到结构体的转换。使用 database/sql 包访问和操作 SQL 数据库,执行诸如插入、查询等操作。结合上述步骤,可以在 Go 中构建基于 SQL 和 JSON 的应用,实现用户注册和登录等功能。
如何在 Golang 中使用 SQL 与 JSON 数据交互
Golang 提供了强大的库和包,使使用 SQL 与 JSON 数据交互变得轻而易举。以下是如何在 Golang 中实现 SQL 与 JSON 交互:
使用 json.Unmarshal
json.Unmarshal 函数可将 JSON 数据解析为 Golang 结构体。例如:
type User struct { ID int64 `json:"id"` Name string `json:"name"` Email string `json:"email"` Created int64 `json:"created"` } var jsonString = `{ "id": 1, "name": "John Doe", "email": "john@example.com", "created": 1587398123 }` var user User err := json.Unmarshal([]byte(jsonString), &user) if err != nil { fmt.Println("Error:", err) }
使用 database/sql
database/sql 包提供了访问和操作 SQL 数据库的功能。示例如下:
import ( "database/sql" "log" ) func main() { db, err := sql.Open("postgres", "user:password@host:port/dbname") if err != nil { log.Fatal(err) } defer db.Close() jsonValue := "{ \"name\": \"Joe\", \"age\": 30 }" // 从 JSON 中创建 SQL struct type User struct { Name string Age int } user := User{Name: "Joe", Age: 30} // 将 SQL struct 转换为 JSON userJSON, err := json.Marshal(user) if err != nil { log.Fatal(err) } // 使用 JSONB 类型插入 JSON 值 _, err = db.Exec("INSERT INTO users (name, age) VALUES ($1, $2)", jsonValue, user.Age) if err != nil { log.Fatal(err) } // 查询 JSON 值 rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var name string var age int var jsonString string if err := rows.Scan(&name, &age, &jsonString); err != nil { log.Fatal(err) } println(name, age, jsonString) } }
实战案例:用户注册与登录
我们可以利用 Go 的 SQL 与 JSON 交互能力构建一个简单的用户注册和登录 API:
注册 API
func register(w http.ResponseWriter, r *http.Request) { var user User if err := json.NewDecoder(r.Body).Decode(&user); err != nil { http.Error(w, "Invalid JSON", http.StatusBadRequest) return } // 将 JSON 转换为 SQL struct sqlUser := sqlx.Named("name", user.Name).Named("password", user.Password) // SQL 查询插入 query := `INSERT INTO users (name, password) VALUES (:name, :password)` if _, err := db.NamedExec(query, sqlUser); err != nil { http.Error(w, "Could not register user", http.StatusInternalServerError) return } fmt.Fprintf(w, "User registered successfully") }
登录 API
func login(w http.ResponseWriter, r *http.Request) { var user User if err := json.NewDecoder(r.Body).Decode(&user); err != nil { http.Error(w, "Invalid JSON", http.StatusBadRequest) return } // SQL 查询 query := `SELECT * FROM users WHERE name = $1 AND password = $2` var result User if err := db.Get(&result, query, user.Name, user.Password); err != nil { http.Error(w, "Invalid user credentials", http.StatusUnauthorized) return } // 将 SQL struct 转换为 JWT 令牌 tokenString, err := createJWT(result) if err != nil { http.Error(w, "Could not create JWT", http.StatusInternalServerError) return } fmt.Fprintf(w, "User authenticated. Token: %s", tokenString) }
Atas ialah kandungan terperinci Bagaimana untuk berinteraksi dengan data JSON menggunakan SQL dalam Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

C lebih sesuai untuk senario di mana kawalan langsung sumber perkakasan dan pengoptimuman prestasi tinggi diperlukan, sementara Golang lebih sesuai untuk senario di mana pembangunan pesat dan pemprosesan konkurensi tinggi diperlukan. Kelebihan 1.C terletak pada ciri-ciri perkakasan dan keupayaan pengoptimuman yang tinggi, yang sesuai untuk keperluan berprestasi tinggi seperti pembangunan permainan. 2. Kelebihan Golang terletak pada sintaks ringkas dan sokongan konvensional semulajadi, yang sesuai untuk pembangunan perkhidmatan konvensional yang tinggi.

Golang cemerlang dalam aplikasi praktikal dan terkenal dengan kesederhanaan, kecekapan dan kesesuaiannya. 1) Pengaturcaraan serentak dilaksanakan melalui goroutine dan saluran, 2) Kod fleksibel ditulis menggunakan antara muka dan polimorfisme, 3) memudahkan pengaturcaraan rangkaian dengan pakej bersih/HTTP, 4) Membina crawler serentak yang cekap, 5) Debugging dan mengoptimumkan melalui alat dan amalan terbaik.

Ciri -ciri teras GO termasuk pengumpulan sampah, penyambungan statik dan sokongan konvensional. 1. Model keseragaman bahasa GO menyedari pengaturcaraan serentak yang cekap melalui goroutine dan saluran. 2. Antara muka dan polimorfisme dilaksanakan melalui kaedah antara muka, supaya jenis yang berbeza dapat diproses secara bersatu. 3. Penggunaan asas menunjukkan kecekapan definisi fungsi dan panggilan. 4. Dalam penggunaan lanjutan, kepingan memberikan fungsi saiz semula dinamik yang kuat. 5. Kesilapan umum seperti keadaan kaum dapat dikesan dan diselesaikan melalui perlumbaan getest. 6. Pengoptimuman prestasi menggunakan objek melalui sync.pool untuk mengurangkan tekanan pengumpulan sampah.

Pergi bahasa berfungsi dengan baik dalam membina sistem yang cekap dan berskala. Kelebihannya termasuk: 1. Prestasi Tinggi: Disusun ke dalam Kod Mesin, Kelajuan Berjalan Cepat; 2. Pengaturcaraan serentak: Memudahkan multitasking melalui goroutine dan saluran; 3. Kesederhanaan: sintaks ringkas, mengurangkan kos pembelajaran dan penyelenggaraan; 4. Cross-Platform: Menyokong kompilasi silang platform, penggunaan mudah.

Keliru mengenai penyortiran hasil pertanyaan SQL. Dalam proses pembelajaran SQL, anda sering menghadapi beberapa masalah yang mengelirukan. Baru-baru ini, penulis membaca "Asas Mick-SQL" ...

Hubungan antara konvergensi stack teknologi dan pemilihan teknologi dalam pembangunan perisian, pemilihan dan pengurusan susunan teknologi adalah isu yang sangat kritikal. Baru -baru ini, beberapa pembaca telah mencadangkan ...

Golang ...

Bagaimana membandingkan dan mengendalikan tiga struktur dalam bahasa Go. Dalam pengaturcaraan GO, kadang -kadang perlu untuk membandingkan perbezaan antara dua struktur dan menggunakan perbezaan ini kepada ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna