type DeviceInfo struct {
id int `orm:"id"`
Device string `orm:"device"`
Info string `orm:"device_info"`
DeviceIp string `orm:"device_ip"`
UploadAt string `orm:"upload_at"`
}
type ResponseRes struct {
Code int
Message string
Data interface{} `json:"data"`
}
// Index is a demonstration route handler for output "Hello World!".
func (a *helloApi) Index(r *ghttp.Request) {
m := g.DB().Model("face_device_upload_info")
var deviceInfo []*DeviceInfo
m.Where("id>", "10").Scan(&deviceInfo)
r.Response.WriteJsonExit(ResponseRes{Data: &deviceInfo})
}
type DeviceInfo struct {
Id int `orm:"id"`
Info map[string]string `orm:"refund_exchange"`
}
type ResponseRes struct {
Code int
Message string
Data interface{} `json:"data"`
}
func (a *goodsApi) GetList(r *ghttp.Request) *response.Response {
m := g.DB().Model("goods")
var deviceInfo []*DeviceInfo
m.Where("id>", 10).Scan(&deviceInfo)
return &response.Response{Data: &deviceInfo, Message: response.SuccessGetList}
}
11 Comments
chinayesgo
这样的一个结构,
device_info
是mysql
内的JSON
字段,但是转换的时候被转义了,如何设置不被转义呢?另外在r.Response.WriteJsonExit
是否也会自动转义JSON
?如何设置不转义?郭强
首先你看看你的数据表中的数据
device_info
字段JSON
字符串是否被转义。其次你的
Info
属性的类型是字符串,改为具体结构体试试。chinayesgo
首先mysql内的device_info肯定没有被转义,其次device_info这个字段为JSON类型,是不同设备发送的各类信息,内容各不相同,这个怎么处理?另外在
r.Response.WriteJsonExit
是否也会自动转义JSON?如何设置不转义?
chinayesgo
如果不使用结构转换,GO好像可以用 jsonEncoder.SetEscapeHTML(false) 设置不转义?类似PHP中json_encode( $json_context, 320) 但是如果用框架的结构自动转换如何设置?这个需求在和很多第三方做对接时候用的很多
chinayesgo
choudxxx
你好,用你的实例我的怎么返回是nil呢,数据库字段是json类型,数据也是json格式
choudxxx
结构体支持mysql的json类型
踩过的坑希望能帮助到大家
郭强
chinayesgo chinayesgo 如果数据表字段为
JSON
格式,目前CLI
工具是自动当做string
类型来对应的,开发者可以自定义为map
或者struct
可以接受的类型,底层会自动转换。choudxxx
你好info的类型我试过map[string]string、map[string]interface{},refund_exchange在数据库是json类型 ,数据为[{"Uid": 1, "Name": "john", "Site": "https://goframe.org"}],或者{"Uid": 1, "Name": "john", "Site": "https://goframe.org"}返回都是nil,实现UnmarshalValue接口可以达到json转换的效果,但是所有的属性都要重写一遍 ,请问怎么操作好
郭强
你好,正常是可以自动接收
JSON
数据类型的,如果实在不行请将你的SQL
和可运行的代码提交issue
我帮你看看,WIKI中不接受issue
反馈。wangtufly
同样的问题, json 结构是 {} 能自动解开,是[{},{}]就解不开,同时返回nil