在Go語言中,我們經常需要將數據存儲到表記錄或者JSON中,因此,在操作這些數據的過程中,對于表記錄和JSON數據的處理顯得至關重要。
在Go語言中,表記錄和JSON均可以使用結構體來表示,對于表記錄,我們可以使用database/sql包提供的方法來進行操作,如下面這個示例:
type User struct { Id int Name string Age int Occupation string } db, err := sql.Open("mysql", "user:password@/dbname") if err != nil { log.Fatal(err) } defer db.Close() rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() var users []User for rows.Next() { var user User if err := rows.Scan(&user.Id, &user.Name, &user.Age, &user.Occupation); err != nil { log.Fatal(err) } users = append(users, user) } if err := rows.Err(); err != nil { log.Fatal(err) }
對于JSON數據,我們可以使用encoding/json包提供的方法來將JSON數據轉化為Go語言結構體或是將Go語言結構體序列化成JSON數據,如下面這個示例:
type User struct { Id int `json:"id"` Name string `json:"name"` Age int `json:"age"` Occupation string `json:"occupation"` } jsonData := []byte(` [ {"id": 1, "name": "John", "age": 30, "occupation": "Engineer"}, {"id": 2, "name": "Jane", "age": 25, "occupation": "Designer"} ] `) users := []User{} if err := json.Unmarshal(jsonData, &users); err != nil { log.Fatal(err) } if jsonData, err := json.Marshal(users); err != nil { log.Fatal(err) } else { fmt.Println(string(jsonData)) }
在這個示例中,我們定義了一個名為User的結構體,并使用`json:"xxx"`語法來指定JSON中字段的名稱。我們通過將JSON數據解析到User結構體切片中來獲取JSON中的所有數據,也可以通過將User切片序列化成JSON字符串來將數據寫入到JSON中。
上一篇go 結構體磚json
下一篇html往上移代碼