gpt4 book ai didi

mysql - 在 Go REST-API 中传输 MySQL JSON 数据类型

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:51 25 4
gpt4 key购买 nike

我正在尝试设置一个从数据库查询数据并将其作为 JSON 发送的 Go MySQL 服务器。我的数据库包含一些采用新 JSON 类型的列。

map 结构:

type Map struct{
Id int `json:"id"`
Data string `json:"data"` //This column is stored in the database as a JSON. Which type to use here?
Created time.Time `json:"created"`
UserId int `json:userid`
}

从数据库中获取数据的函数

func GetMap(id int) Map{
var mapId int
var data string //which type should this be
var userId int
var created time.Time
err := _getMap.QueryRow(id).Scan(&mapId, &data, &userId, &created) //getMap is a prepared query
mapObj := Map{Id:mapId, Data:data, UserId:userId, Created:created}

return mapObj

}

当我像这样发送这些数据时

resp.Header().Set("Content-Type", "application/json; charset=UTF-8")
resp.WriteHeader(http.StatusOK)
gmap := GetMap(id)

err := json.NewEncoder(resp).Encode(gmap);

客户端接收到的JSON中的数据被格式化为字符串:

{\"field\":\"nowork\"...}

我认为问题是由结构定义中错误的数据类型引起的,这意味着数据将以错误的格式解析。

我曾尝试将数据类型更改为 []uint8、interface{} 和其他一些我认为可能相关的数据类型,但无济于事。

最佳答案

好的,就像评论中建议的预匹配一样,我尝试使用 JASON处理 JSON 解析的模块。令我惊讶的是,它有效:

func GetMap(id int) Map{
var mapId int
var data string
var userId int
var created time.Time
err := _getMap.QueryRow(id).Scan(&mapId, &data, &userId, &created)

if (err != nil){
log.Print(err)
}
dataJSON, _ := jason.NewObjectFromBytes([]byte(data))
mapObj := Map{Id:mapId, Data:dataJSON, UserId:userId, Created:created}
return mapObj

}

在 REST 客户端中以正确的格式接收:

{"field":"works!"...}

关于mysql - 在 Go REST-API 中传输 MySQL JSON 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com