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 }