3 回答

TA貢獻1817條經驗 獲得超14個贊
在這里,當分配×tamp{..}給 t 時,它正在更改指針,而不是它指向的值必須按如下方式更改
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
}
編輯
由于您在從數據庫讀取時未能解組,這不是因為?如果您使用的是 sql,則json.unmarshalling
必須實施sql.Scanner

TA貢獻1829條經驗 獲得超9個贊
我認為您的代碼還可以-除了解組中的代碼。您沒有在實際錯誤所在的編組/解組位置顯示代碼。
我讓它在操場上工作。
而不是這個(它改變了指針)
t = ×tamp{
? time.Unix(i, 0),
}
更改值
t.Time = time.Unix(i,0)
使用結構的主要功能
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貢獻1851條經驗 獲得超4個贊
好吧,在混淆了這里的很多人(抱歉)和我自己之后,我找到了解決方案。
對 json 的編組現在只需要像這樣修復 gocql 兼容性:
var ts time.Time
for iter.Scan(&message.Text, &ts) {
message.Timestamp = timestamp{ts}
userlogResult.Messages = append(userlogResult.Messages, message)
}
- 3 回答
- 0 關注
- 149 瀏覽
添加回答
舉報