问题内容 我在 psql 中有这样的表: table transactions ( hash bytea not null ) 我想从数据库获取数据并将其作为对用户的响应返回:
我在 psql 中有这样的表:
table transactions (
hash bytea not null
)
我想从数据库获取数据并将其作为对用户的响应返回:
type transaction struct {
hash []byte `gORM:"column:hash" JSON:"hash"`
}
func getalltransactions(c *gin.context) {
var transactions []models.transaction
initializers.database.limit(10).find(&transactions)
c.json(Http.statusok, gin.h{"result": transactions})
}
回应:
{
"result": [
{
"hash": "lvei8w7ugvs7s/ay3wuxnbr2s9a+p7b/1l1+6z9k9jg="
}
]
}
但是默认情况下hash
有错误的数据,我想得到这样的东西:
SELECT '0x' || encode(hash::bytea, 'hex') AS hash_hex FROM transactions LIMIT 1;
0x2d5788f30eee815b3bb3f018dd65319db476b3D6be3fb6ffd65d7ee99f4af638
我尝试制作 scanner / valuer
,但到目前为止还没有帮助
根据cerise limón的建议,我做了这个:
type hexbytes []byte
type transaction struct {
hash hexbytes `Gorm:"column:hash" json:"hash"`
}
func (b hexbytes) marshaljson() ([]byte, error) {
hexstr := hex.encodetostring(b)
return []byte(`"0x` + hexstr + `"`), nil
}
响应变成这样:
{
"result": [
{
"hash": "0x2d5788f30eee815b3bb3f018dd65319db476b3d6be3fb6ffd65d7ee99f4af638"
}
]
}
也许有更好的方法,我很高兴看到其他建议
--结束END--
本文标题: GORM:将 bytea 序列化为十六进制字符串
本文链接: https://lsjlt.com/news/563848.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0