首頁  >  文章  >  後端開發  >  GO:導入一個結構並在 json 中重命名它

GO:導入一個結構並在 json 中重命名它

王林
王林轉載
2024-02-09 10:36:18517瀏覽

GO:导入一个结构并在 json 中重命名它

php小編魚仔為您介紹一種在JSON中匯入結構並重新命名它的方法,即使用"GO"關鍵字。在JSON中,我們經常需要使用已定義的結構,但有時我們需要將其重新命名以適應特定的需求。使用"GO"關鍵字,我們可以在導入結構的同時,對其進行重新命名操作,從而更好地滿足我們的需求。這種方法簡單易用,讓我們能夠更靈活地處理JSON資料。接下來,讓我們一起來了解具體的操作步驟吧!

問題內容

我用 gorm 建立了一個資料庫。為此,我創建了一個結構,並使用該結構建立了一個表。到目前為止,一切都很好。在後端,一切正常,但在前端,問題是調用的 json 總是返回大寫的 id,而 swagger 會產生一個小寫的 id。 go 中有沒有一種方法可以使用 json 標識符覆蓋從 gorm 導入的結構?

import "gorm.io/gorm"

type report struct {
   gorm.model
   createdby          user     `gorm:"foreignkey:createdbyuserid" json:"createdby"`
   archived           bool     `json:"archived"`
}

這個結構給了我以下回應

{
    "ID": 8,
    "CreatedAt": "2022-11-15T20:45:16.83+01:00",
    "UpdatedAt": "2022-12-27T21:34:17.871+01:00",
    "DeletedAt": null
    "createdBy": {
        "ID": 1,
        "CreatedAt": "2022-11-15T20:02:17.497+01:00",
        "UpdatedAt": "2022-11-15T20:02:17.497+01:00",
        ...
    },
    "archived": true,
}

有沒有辦法讓 id 小寫(如 archived)?或者我可以在 swaggo 調整它,使其以大寫形式生成。

我所看到的是,您可以在沒有此 gorm.model 的情況下製作表格並自己定義所有屬性。問題是我必須自己建立這些列的所有功能(刪除、更新、索引、主鍵…)。

解決方法

我創建自己的 gorm-model-struct:

type gormmodel struct {
    id        uint           `gorm:"primarykey" json:"id"`
    createdat time.time      `json:"createdat"`
    updatedat time.time      `json:"updatedat"`
    deletedat gorm.deletedat `gorm:"index" json:"deletedat"`
} //@name models.gormmodel

我將此結構導入到其他結構中:

type Report struct {
   GormModel
   CreatedBy          User     `gorm:"foreignKey:CreatedByUserID" json:"createdBy"`
   Archived           bool     `json:"archived"`
}

重要的是,您新增 json-key 並設定屬性名稱。

以上是GO:導入一個結構並在 json 中重命名它的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除