 AimerNeige zrewidował ten Gist 2 years ago. Przejdź do rewizji
                
                AimerNeige zrewidował ten Gist 2 years ago. Przejdź do rewizji
                
                    1 file changed, 53 insertions
gorm-json-example.go(stworzono plik)
| @@ -0,0 +1,53 @@ | |||
| 1 | + | package main | |
| 2 | + | ||
| 3 | + | import ( | |
| 4 | + | "encoding/json" | |
| 5 | + | "fmt" | |
| 6 | + | ||
| 7 | + | "gorm.io/datatypes" | |
| 8 | + | "gorm.io/driver/sqlite" | |
| 9 | + | "gorm.io/gorm" | |
| 10 | + | ) | |
| 11 | + | ||
| 12 | + | type User struct { | |
| 13 | + | gorm.Model | |
| 14 | + | Name string | |
| 15 | + | Data datatypes.JSON | |
| 16 | + | } | |
| 17 | + | ||
| 18 | + | type UserData struct { | |
| 19 | + | Age int `json:"age"` | |
| 20 | + | Mail string `json:"mail"` | |
| 21 | + | } | |
| 22 | + | ||
| 23 | + | func 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 | + | } | |
    
    
                            
                            Nowsze
    
    
    Starsze