在使用Golang進(jìn)行SQL查詢操作時(shí),我們經(jīng)常需要將JSON格式的數(shù)據(jù)進(jìn)行解析,以便在Go應(yīng)用程序中對(duì)其進(jìn)行相關(guān)操作。下面是一個(gè)使用Golang進(jìn)行SQL和JSON解析的示例:
package main import ( "database/sql" "encoding/json" "fmt" _ "github.com/go-sql-driver/mysql" ) type User struct { Id int Name string Info string } func main() { db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/database_name") if err != nil { panic(err) } defer db.Close() rows, err := db.Query("SELECT * FROM users") if err != nil { panic(err) } defer rows.Close() var users []User for rows.Next() { var id int var name string var info string err = rows.Scan(&id, &name, &info) if err != nil { panic(err) } var u User u.Id = id u.Name = name err = json.Unmarshal([]byte(info), &u.Info) if err != nil { panic(err) } users = append(users, u) } fmt.Println(users) }
在上面的示例中,我們首先創(chuàng)建了一個(gè)名為User的結(jié)構(gòu)體,用于存儲(chǔ)從數(shù)據(jù)庫(kù)中檢索出的數(shù)據(jù)。然后我們使用Golang標(biāo)準(zhǔn)庫(kù)中的database/sql和encoding/json包,分別用于與MySQL進(jìn)行交互和解析JSON數(shù)據(jù)。
在查詢數(shù)據(jù)庫(kù)之后,我們使用for循環(huán)遍歷獲取的行,并通過(guò)err = rows.Scan()函數(shù)將每個(gè)字段的值讀取到變量中。接下來(lái),我們創(chuàng)建一個(gè)新的User對(duì)象,在該對(duì)象中設(shè)置id和name屬性,并使用json.Unmarshal()函數(shù)將JSON字符串解析到User的info字段中。
最后,我們將每個(gè)User對(duì)象添加到一個(gè)名為users的slice中,并在程序結(jié)束時(shí)打印出結(jié)果。通過(guò)這種方式,我們可以輕松地將JSON格式的數(shù)據(jù)從MySQL數(shù)據(jù)庫(kù)中解析到Golang中,并進(jìn)行進(jìn)一步的操作。