json - 在 BoltDB 中存储数据的最佳方式

标签 json serialization go store boltdb

我是 BoltDB 和 Golang 的新手,正在寻求您的帮助。

所以,我知道我只能为 BoltDB 的键和值保存字节数组 ([]byte)。如果我有一个如下的用户结构,并且键将是用户名,那么将数据存储到需要字节数组的 BoltDB 中的最佳选择是什么?

序列化它还是 JSON?还是更好的方法?

type User struct {
    name string
    age  int
    location string
    password string
    address string 
}

非常感谢,祝你晚安

最佳答案

是的,我建议将 User 结构编码为 JSON,然后使用唯一键 []byte slice 。不要忘记,编码为 JSON 仅包括导出的结构字段,因此您需要更改结构,如下所示。

另一个例子,见 BoltDB GitHub page .

type User struct {
    Name string
    Age  int
    Location string
    Password string
    Address string 
}

func (user *User) save(db *bolt.DB) error {
    // Store the user model in the user bucket using the username as the key.
    err := db.Update(func(tx *bolt.Tx) error {
        b, err := tx.CreateBucketIfNotExists(usersBucket)
        if err != nil {
            return err
        }    

        encoded, err := json.Marshal(user)
        if err != nil {
            return err
        }
        return b.Put([]byte(user.Name), encoded)
    })
    return err
}

关于json - 在 BoltDB 中存储数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322933/

相关文章:

go - 为什么 switch 在下面的 golang 代码示例中匹配不同的类型

go - golang 中的 C 风格条件编译

javascript - .map() 不是函数映射动态创建的对象时出错

javascript - react native api 调用响应

javascript - 使用 jquery 将 obj 格式化为 json

json - 使用 POST 请求将 WebApi 序列化为 Json

.net - 通过 Web 服务传递具有复杂属性的对象

javascript - 如何将 JSON 对象转换为 js 二维数组

java - 在 Jackson 序列化中从数组中删除空 JSON 对象

go - IPAddr 类型的字符串方法