package models import ( "database/sql/driver" "encoding/json" "fmt" ) type Persons []Person // --- Implement driver.Valuer (for saving to DB) func (r Persons) Value() (driver.Value, error) { return json.Marshal(r) } // --- Implement sql.Scanner (for reading from DB) func (r *Persons) Scan(value any) error { bytes, ok := value.([]byte) if !ok { return fmt.Errorf("failed to unmarshal Settings: %v", value) } return json.Unmarshal(bytes, r) } type Person struct { Id int `gorm:"primaryKey" json:"id"` FirstName string `gorm:"column:firstName" json:"firstName"` LastName string `gorm:"column:lastName" json:"lastName"` } // --- Implement driver.Valuer (for saving to DB) func (r Person) Value() (driver.Value, error) { return json.Marshal(r) } // --- Implement sql.Scanner (for reading from DB) func (r *Person) Scan(value any) error { bytes, ok := value.([]byte) if !ok { return fmt.Errorf("failed to unmarshal Settings: %v", value) } return json.Unmarshal(bytes, r) }