Формат моего вывода JSON после того, как я упорядочил структуру, содержит много escape-символов и двойных кавычек.
Я пытался использовать кодировщик Marshalling, RawMessages, принудительно удаляя части строки.
data := ChannelData{}
if err := rows.Scan(&data.Idx, &data.MciIdx, &data.Channel, &data.MatchIdx, &data.MatchCx, &data.StartTs, &data.EndTs, &data.Len, &data.MatchStartTs, &data.MatchEndTs, &data.MatchLen, &data.Happened, &data.Instance); err != nil {
log.Printf("%+v\n", rows)
log.Error().Err(err).Msg("unable to scan mysql data into struct")
continue
}
jsonD, err := json.Marshal(&data)
if err != nil {
log.Error().Err(err).Msg("cannot marshal data")
}
log.Debug().Msg(string(jsonD))
type ChannelData struct {
Idx string `json:"idx,string"`
MciIdx string `json:"mci_idx,string"`
Channel string `json:"channel,string"`
MatchIdx string `json:"match_idx,string"`
MatchCx string `json:"match_cx,string"`
StartTs string `json:"start_ts,string"`
EndTs string `json:"end_ts,string"`
Len string `json:"len,string"`
MatchStartTs string `json:"match_start_ts,string"`
MatchEndTs string `json:"match_end_ts,string"`
MatchLen string `json:"match_len,string"`
Happened string `json:"happened,string"`
Instance string `json:"instance,string"`
}
Я получаю:
{"level": "debug", "time": "2019-07-10T20: 12: 09Z", "message": "{\"IDX \": \ "\\" 8931741865 \\ "\", \ "mci_idx \": \ "\\" \\ 107265043 "\", \ "канал \": \ "\\" \\ WPVIDT»\», \ "match_idx \": \ "\\" \\ 36028797060807935 "\", \ "match_cx \": \ "\\" \\ "\", \ "start_ts \": \ "\\" 2019-07-10 17:57:59 \\ "\", \ "end_ts \": \ "\\" 2019-07-10 17:58:14 \\ "\", \ "len \": \ "\\ "00:00:15 \\" \ ", \" match_start_ts \ ": \" \\ "2019-06-05 07:14:52 \\" \ ", \" match_end_ts \ ": \" \\ "2019-06-05 07:15:08 \\" \ ", \" match_len \ ": \" \\ "00:00:16 \\" \ ", \" произошло \ ": \" \\"2019-07-10 17:58:16 \\" \ ", \" instance \ ": \" \\ "172.17.65.80 \\" \ "}"}
Я ожидаю, что это будетв формате JSON:
{"level": "debug", "time": "2019-07-10T20: 12: 09Z", "message": "{" idx ":" 8931741865 ","mci_idx ":" 107265043" , "канал": "WPVIDT" ...} "}