golangでのjsonとstructの使用
7161 ワード
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"`
}
2、データベースのフィールドをstructに変換する
gormフレームワークを使用してデータベース接続を行う場合は、次のようにgorm:"column:key"
でデータベースのキーを指定できます.type User struct {
Id int64 `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name,omitempty"`
}
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"
}
}
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"
}
}
type MyData struct {
Id int `json:"-"`
Name string `json:"name"`
}
type User struct {
Id int64 `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name,omitempty"`
}