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 关注
- 105 浏览
添加回答
举报