[gogf/gf]使用gdb时候如何使struct导出json的字段名称与绑定数据库的字段名称不相同。

2024-06-25 286 views
2

例如User的Name属性

type User struct { Id int64 gconv:"id"
Name string json:"userName" gconv:"user_name"
}

希望json输出的是userName 对应数据库的字段名是user_name

回答

9

@hailaz 你这个issue特别不规范,我不是特别清楚你的问题,我记得好像是可以解决的,你把示例代码贴上来吧。

1

//如果用 (r *Response) WriteJson函数输出json,将会用gconv的tag进行字段名转换。

type UserTemp struct { Id int64 json:"id" // Status int json:"status" // UserName string json:"userName" gconv:"user_name" // }

func Teee() { u := UserTemp{} r, _ := defDB.Table("user").One() r.ToStruct(&u)

jsonBytes, _ := json.Marshal(u)
fmt.Println(string(jsonBytes)) //{"id":50,"status":0,"userName":"admin"}

b, _ := gparser.VarToJson(u)//github.com\gogf\gf@v1.6.15\g\net\ghttp\ghttp_response.go:78 (r *Response) WriteJson(content interface{})
fmt.Println(string(b)) //{"id":50,"status":0,"user_name":"admin"}

}

6

@johngcn 忘记@了

3

@johngcn 再发一遍,,刚刚格式异常。 如果用 (r *Response) WriteJson函数输出json,将会用gconv的tag进行字段名转换。

type UserTemp struct {
    Id       int64  `json:"id"`                         //
    Status   int    `json:"status"`                     //
    UserName string `json:"userName" gconv:"user_name"` //
}

func Teee() {
    u := UserTemp{}
    r, _ := defDB.Table("user").One()
    r.ToStruct(&u)

    jsonBytes, _ := json.Marshal(u)
    fmt.Println(string(jsonBytes)) //{"id":50,"status":0,"userName":"admin"}

    b, _ := gparser.VarToJson(u)//github.com\gogf\gf@v1.6.15\g\net\ghttp\ghttp_response.go:78 (r *Response) WriteJson(content interface{})
    fmt.Println(string(b)) //{"id":50,"status":0,"user_name":"admin"}

}
6

@hailaz 已改进,下一版本发布。

5

@hailaz 已发布