GORM: Bytea in Hex-String serialisieren

WBOY
Freigeben: 2024-02-12 16:24:05
nach vorne
386 Leute haben es durchsucht

GORM:将 bytea 序列化为十六进制字符串

Frageninhalt

Ich habe eine Tabelle wie diese in psql:

table transactions (
    hash bytea not null
)
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren
func getalltransactions(c *gin.context) {
    var transactions []models.transaction
    initializers.database.limit(10).find(&transactions)

    c.json(http.statusok, gin.h{"result": transactions})
}
Nach dem Login kopieren

Antwort:

{
    "result": [
        {
            "hash": "lvei8w7ugvs7s/ay3wuxnbr2s9a+p7b/1l1+6z9k9jg="
        }
    ]
}
Nach dem Login kopieren

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
Nach dem Login kopieren

Ich habe versucht, scanner / valuer zuzubereiten, aber bisher hat es nicht geholfen.

Abhilfe

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
}
Nach dem Login kopieren

Die Antwort sieht so aus:

{
    "result": [
        {
            "hash": "0x2d5788f30eee815b3bb3f018dd65319db476b3d6be3fb6ffd65d7ee99f4af638"
        }
    ]
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!