我正在尝试通过 MySQL 将 sphinx 查询转换为 golang 结构,并且遇到了困难。看起来这应该是一种常见的问题,但到目前为止,我一直坚持将其转换为地图或自己解析输出。具体来说,我在 sphinx 中有一个类似于 {Source: {ID:string, subId:string, Campaigns:[]{CampaignID:string, Status:string}}} 的模式
我试过使用简单的 rows.scan 但这并不能帮助我解析重复字段,我只是将它作为未解析的字符串获取。在 sphinx 中,键不在引号中,因此 JSON.unmarshal 似乎根本没有帮助。并使用 sqlx,我尝试构建以下结构
type CampaignStatus struct {
CampaignId string
Status string
}
type Source struct {
Id string
SubId string
StatusByCampaign []CampaignStatus
}
type Status struct {
Source
}
并将状态结构传递给 Row.ScanStruct() 并且我返回“缺少目标名称源”错误,或者如果我在状态中命名源成员,我得到“sql:列索引 0 上的扫描错误:不支持的扫描,将 driver.Value 类型 []uint8 存储到类型 *v1.Source" 中。完全披露,狮身人面像模式有一些其他列作为 StatusByCampaign 的对等列,它们紧随其后,在我的用例中我不关心它们。
这似乎是以前必须遇到的事情,但除了编写自己的解析器之外,我似乎找不到解决方案,我不愿意这样做。