golang中json和struct的使用
1、返回json响应结果
在struct的字段后面加入json:"key"可以进行json格式输出,其中key为json的键名
type SuccessResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}
func SuccessRsp(ctx *gin.Context, data interface{}) {
res := SuccessResponse{
Code: 0,
Msg: "success",
Data: data,
}
ctx.JSON(http.StatusOK, res)
}
type MyData struct {
Id int `json:"id"`
Name string `json:"name"`
}
func ListAllOncallPlan(ctx *gin.Context) {
//你的业务代码
//......
data = Mydata{Id:1, Name:"zhangsan"}
SuccessRsp(ctx, plans)
}
响应的结果为:
{
"code": 0,
"msg": "ok",
"data": {
"id": 1,
"name": "zhangsan"
}
}
tips:
1.如果struct的某个字段没有传值,则输出的json为默认值,可以通过"omitempty"参数忽略掉值为空的键
type MyData struct {
Id int `json:"id,omitempty"`
Name string `json:"name"`
}
data = Mydata{Name:"zhangsan"}
SuccessRsp(ctx, plans)
则id的键会被忽略掉,输出json为:
{
"code": 0,
"msg": "ok",
"data": {
"name": "zhangsan"
}
}
2.可以用"-"来完全掉忽略掉某个键, 比如下面的id不会被转化到json字段中
type MyData struct {
Id int `json:"-"`
Name string `json:"name"`
}
1
2
3
4
2、将数据库的字段转化成struct
如果使用gorm框架进行数据库连接,则可以用gorm:"column:key"来指定数据库的键,如下所示
type User struct {
Id int64 `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name,omitempty"`
}
原文链接:https://blog.csdn.net/springlustre/java/article/details/88703929