golang gorm 某一个结构的Version 为 long long ,如何在通过Gin 返回时,通过json tag,将Version字段转为 string
时间: 2024-03-27 09:38:21 浏览: 112
Golang通过Thrift框架完美实现跨语言调用
可以通过在结构体字段上添加 `json` tag 来指定返回的 JSON 字段名以及类型转换方式。具体实现方式如下:
```go
type User struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"not null" json:"name"`
Version int64 `gorm:"not null" json:"version,string"`
}
```
在上面的结构体定义中,`Version` 字段上的 `json` tag 指定了返回的 JSON 字段名为 `version`,并且将 `int64` 类型转为 `string` 类型。
然后在 Gin 的返回中直接返回该结构体即可:
```go
router.GET("/user/:id", func(c *gin.Context) {
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid user ID"})
return
}
var user User
result := db.First(&user, id)
if result.Error != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
return
}
c.JSON(http.StatusOK, user)
})
```
在上面的代码中,`c.JSON(http.StatusOK, user)` 直接返回了 `User` 结构体,Gin 会自动将其转为 JSON 格式并返回给客户端。在转换过程中,`Version` 字段会被转为字符串类型。
阅读全文