postgresql model Jsonb格式存储 gorm2.0
2022/3/29 19:26:33
本文主要是介绍postgresql model Jsonb格式存储 gorm2.0,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
type JSON json.RawMessage // Scan scan value into Jsonb, implements sql.Scanner interface func (j *JSON) Scan(value interface{}) error { bytes, ok := value.([]byte) if !ok { return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value)) } result := json.RawMessage{} err := json.Unmarshal(bytes, &result) *j = JSON(result) return err } // Value return json value, implement driver.Valuer interface func (j JSON) Value() (driver.Value, error) { if len(j) == 0 { return nil, nil } return json.RawMessage(j).MarshalJSON() } func (JSON) GormDBDataType(db *gorm.DB, field *schema.Field) string { // use field.Tag, field.TagSettings gets field's tags // checkout https://github.com/go-gorm/gorm/blob/master/schema/field.go for all options // returns different database type based on driver name switch db.Dialector.Name() { case "mysql", "sqlite": return "JSON" case "postgres": return "JSONB" } return "" } // convert map[string]interface{} to JSON func MapToJSON(m *map[string]interface{}) (JSON, error) { if m == nil { return nil, errors.New("map is nil") } bytes, err := json.Marshal(*m) if err != nil { return nil, err } return bytes, nil } // convert JSON to map[string]interface{} func JSONToMap(j JSON) map[string]interface{} { if j == nil { return nil } var m map[string]interface{} err := json.Unmarshal(j, &m) if err != nil { return nil } return m } // convert JSON to json.RawMessage func JSONToRawMessage(j JSON) json.RawMessage { if j == nil { return nil } return json.RawMessage(j) } //结构体引用 type XXX struct {
Data JSON `json:"data"` //数据 }
这篇关于postgresql model Jsonb格式存储 gorm2.0的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程
- 2024-12-20Vue3入门教程:从零开始搭建你的第一个Vue3项目
- 2024-12-20从零开始学习vueRouter4:基础教程
- 2024-12-20Vuex4课程:新手入门到上手实战全攻略