2 回答
TA贡献1854条经验 获得超8个赞
正如spew.Dump告诉您的那样,SQL 驱动程序返回[]uint8文本列。实际上,它相当于[]byte,json.Marshal编码为 base64 字符串。
解决这个问题的最简单方法是将您的行扫描到一个真正的结构中(sqlx 可以很好地处理StructScan),该结构将具有string字段,以便json.Marshal按照您的预期显示它们。您可以使用标签控制字段的 SQL 和 JSON 名称的名称,因此您的实体可以具有每种语言的约定名称……
例子:
type City struct {
AdminName string `json:"admin1Name" sql:"admin1Name"`
CityID int64 `json:"cityId" sql:"cityId"`
CityName string `json:"cityName" sql:"cityName"`
CountryName string `json:"countryName" sql:"countryName"`
SearchString string `json:"searchString" sql:"searchString"`
}
TA贡献1780条经验 获得超5个赞
包 encoding/json 将封送[]byte
base64 编码的切片(参见http://golang.org/pkg/encoding/json/#Marshal)。所以问题只是在输出中通过json.Marshal(results)
.
您的代码在某处调用了一个函数,该函数生成了一个[]byte
很好地隐藏在其中一个{}interface
s 中的函数。摆脱每个空接口,在适当的地方使用字符串,问题要么消失,要么解决方案显而易见。
(json.Marshal
出于调试目的而调用和输出结果可能不是一个好主意,尤其是当您并不真正了解实际编组内容时。)
- 2 回答
- 0 关注
- 207 浏览
添加回答
举报