Heim >Backend-Entwicklung >Golang >GORM: Bytea in Hex-String serialisieren
Ich habe eine Tabelle wie diese in psql:
table transactions ( hash bytea not null )
Ich möchte Daten aus der Datenbank abrufen und sie als Antwort an den Benutzer zurückgeben:
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}) }
Antwort:
{ "result": [ { "hash": "lvei8w7ugvs7s/ay3wuxnbr2s9a+p7b/1l1+6z9k9jg=" } ] }
Aber standardmäßig hat hash
falsche Daten, ich möchte so etwas erhalten:
SELECT '0x' || encode(hash::bytea, 'hex') AS hash_hex FROM transactions LIMIT 1; 0x2d5788f30eee815b3bb3f018dd65319db476b3d6be3fb6ffd65d7ee99f4af638
Ich habe versucht, scanner / valuer
zuzubereiten, aber bisher hat es nicht geholfen.
Basierend auf dem Vorschlag von cerise limón habe ich Folgendes gemacht:
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 }
Die Antwort sieht so aus:
{ "result": [ { "hash": "0x2d5788f30eee815b3bb3f018dd65319db476b3d6be3fb6ffd65d7ee99f4af638" } ] }
Vielleicht gibt es einen besseren Weg, ich würde mich über weitere Vorschläge freuen
Das obige ist der detaillierte Inhalt vonGORM: Bytea in Hex-String serialisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!