Utoljára aktív 1702919263

gorm-json-example.go Eredeti
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6
7 "gorm.io/datatypes"
8 "gorm.io/driver/sqlite"
9 "gorm.io/gorm"
10)
11
12type User struct {
13 gorm.Model
14 Name string
15 Data datatypes.JSON
16}
17
18type UserData struct {
19 Age int `json:"age"`
20 Mail string `json:"mail"`
21}
22
23func main() {
24 // init sqlite database
25 db, err := gorm.Open(sqlite.Open("./data.db"), &gorm.Config{})
26 if err != nil {
27 panic(err)
28 }
29 db.AutoMigrate(&User{})
30 // create
31 user1 := User{
32 Name: "Aimer",
33 Data: datatypes.JSON(`{"age": 18, "mail": "aimer@example.com"}`),
34 }
35 user2 := User{
36 Name: "Neige",
37 Data: datatypes.JSON(`{"age": 19, "mail": "neige@example.com"}`),
38 }
39 db.Create(&user1)
40 db.Create(&user2)
41 // search
42 var user User
43 db.Where("data->>'age' = ?", 18).First(&user)
44 fmt.Printf("%v\n", &user)
45 // convert datatypes.JSON to JSON:
46 jsonBytes, _ := user.Data.MarshalJSON()
47 jsonData := string(jsonBytes)
48 fmt.Println(jsonData)
49 // unmarshal
50 var userData UserData
51 json.Unmarshal(jsonBytes, &userData)
52 fmt.Printf("Age: %d, Mail: %s\n", userData.Age, userData.Mail)
53}