3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
在這里,當(dāng)分配×tamp{..}給 t 時(shí),它正在更改指針,而不是它指向的值必須按如下方式更改
func (t *timestamp) UnmarshalJSON(data []byte) error {
? ? i, err := strconv.ParseInt(string(data[:]), 10, 64)
? ? if err != nil {
? ? ? ? return err
? ? }
? ? *t = timestamp{
? ? ? ? time.Unix(i, 0),
? ? }
? ? return nil
}
編輯
由于您在從數(shù)據(jù)庫(kù)讀取時(shí)未能解組,這不是因?yàn)?如果您使用的是 sql,則json.unmarshalling
必須實(shí)施sql.Scanner

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為您的代碼還可以-除了解組中的代碼。您沒(méi)有在實(shí)際錯(cuò)誤所在的編組/解組位置顯示代碼。
我讓它在操場(chǎng)上工作。
而不是這個(gè)(它改變了指針)
t = ×tamp{
? time.Unix(i, 0),
}
更改值
t.Time = time.Unix(i,0)
使用結(jié)構(gòu)的主要功能
fmt.Println("First Log...")
l := log{Timestamp: timestamp{time.Now()}}
fmt.Println(l)
buf, err := json.Marshal(l)
if err != nil {
? ? panic(err)
}
fmt.Println("Marshalled to JSON...")
fmt.Printf("%s\n", buf)
var logCopy log
if err := json.Unmarshal(buf, &logCopy); err != nil {
? ? panic(err)
}
fmt.Println("UnMarshalled from JSON...")
fmt.Println(logCopy)

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
好吧,在混淆了這里的很多人(抱歉)和我自己之后,我找到了解決方案。
對(duì) json 的編組現(xiàn)在只需要像這樣修復(fù) gocql 兼容性:
var ts time.Time
for iter.Scan(&message.Text, &ts) {
message.Timestamp = timestamp{ts}
userlogResult.Messages = append(userlogResult.Messages, message)
}
- 3 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)