【发布时间】:2021-11-06 07:25:12
【问题描述】:
我是 Golang 和 Gin 框架的新手,我创建了两个模型
type Product struct {
gorm.Model
Name string
Media []Media
}
type Media struct {
gorm.Model
URI string
ProductID uint
}
我发送一个 POST 请求来保存一个新产品,正文是:
{
"name": "Product1",
"media": [
"https://server.com/image1",
"https://server.com/image2",
"https://server.com/image3",
"https://server.com/video1",
"https://server.com/video2"
]
}
我使用此代码保存了一个新产品
product := Product{}
if err := context.ShouldBindJSON(product); err != nil { // <-- here the error
context.String(http.StatusBadRequest, fmt.Sprintf("err: %s", err.Error()))
return
}
tx := DB.Create(&product)
if tx.Error != nil {
context.String(http.StatusBadRequest, fmt.Sprintf("err: %s", tx.Error))
return
}
返回的错误信息是
err: json: cannot unmarshal string into Go struct field Product.Media of type models.Media
我知道ShouldBindJSON 无法将media-string 转换为media-object,但是这样做的最佳做法是什么?
【问题讨论】: