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 關注
- 272 瀏覽
添加回答
舉報