我有一個結構,因爲這:元帥INT切片串線
type Int64Slice []int64
type DataWrapper struct {
ListId Int64Slice `json:"listid" required`
Domain string `json:"domain" required`
Name string `json:"name,omitempty"`
}
,我需要它變成:
{
"listid": "1 2 3 4 5",
"domain": "mydomain"
}
我已經寫了自定義MarshalJSON:
func (u Int64Slice) MarshalJSON() ([]byte, error) {
var result string
if u == nil {
result = "null"
} else {
result = strings.Trim(strings.Join(strings.Fields(fmt.Sprint(u)), " "), "[]")
Logger.Debugln(result)
}
return []byte(result), nil
}
func (d *DataWrapper) ToJSON() []byte {
result, err := json.Marshal(d)
if err != nil {
log.Fatalln(err)
panic(err)
}
return result
}
在行Logger.Debugln(result)
,它打印此結果:
20170830090317506 20170830090026319 20170830111023194 201708301043081 ...
JSON:錯誤調用MarshalJSON類型models.Int64Slice:無效 字符 '2' 後的頂級價值
你需要的數字括入雙引號。 – mkopriva
https://play.golang.org/p/krzFBLJWwG – mkopriva
是否有特殊原因不使用切片? JSOn中的某個列表應該表示爲一個數組。 –