tanya/okx/tickerList.go
zhangkun9038@dingtalk.com 446185f780 up
2025-03-07 12:44:09 +08:00

70 lines
1.3 KiB
Go

package okx
import (
"encoding/csv"
"encoding/json"
"strings"
)
// TickerList 封装Ticker数组并提供序列化方法
type TickerList struct {
Tickers []*Ticker
}
// ToJson 将Ticker数组序列化为JSON字符串
func (tl *TickerList) ToJson() (string, error) {
jsonData, err := json.Marshal(tl.Tickers)
if err != nil {
return "", err
}
return string(jsonData), nil
}
// ToCsv 将Ticker数组序列化为CSV字符串
func (tl *TickerList) ToCsv() (string, error) {
var sb strings.Builder
writer := csv.NewWriter(&sb)
// 写入CSV头
header := []string{
"InstType", "InstID", "Last", "LastSz", "AskPx", "AskSz",
"BidPx", "BidSz", "Open24h", "High24h", "Low24h",
"VolCcy24h", "Vol24h", "Ts", "SodUtc0", "SodUtc8",
}
if err := writer.Write(header); err != nil {
return "", err
}
// 写入数据
for _, ticker := range tl.Tickers {
record := []string{
ticker.InstType,
ticker.InstID,
ticker.Last,
ticker.LastSz,
ticker.AskPx,
ticker.AskSz,
ticker.BidPx,
ticker.BidSz,
ticker.Open24h,
ticker.High24h,
ticker.Low24h,
ticker.VolCcy24h,
ticker.Vol24h,
ticker.Ts,
ticker.SodUtc0,
ticker.SodUtc8,
}
if err := writer.Write(record); err != nil {
return "", err
}
}
writer.Flush()
if err := writer.Error(); err != nil {
return "", err
}
return sb.String(), nil
}