我看到如果我存储 QLDB ion.Timestamp
,它不能直接转换为 json 时间字符串(YYYY-MM-DDThh:mm:ss.sssZ
)。
例如:
// result of querying data object from histories(table, from, to)
var val map[string]interface{}
err := ion.Unmarshal(tables.GetCurrentData(), &val) // from multiple table
val == map[string]interface {}{
"createdAt": &ion.Timestamp{
dateTime: time.Time{
wall: 0x41cdb40,
ext: 63746482222,
loc: (*time.Location)(nil),
},
precision: 0x6,
kind: 0x1,
numFractionalSeconds: 0x3,
},
// some other nested column
}
// val when marshalled to json will show:
{"createdAt":{}}
编组时如何强制ion.Timestamp
进入 json 字符串或 int64 unix/epoch?或者我必须递归地检查地图是否是 ion.Timestamp,然后将地图覆盖为 json 字符串?
当前的解决方法(尚未递归)
for k, v := range data {
switch t := v.(type) {
case ion.Timestamp:
data[k] = t.String()
case *ion.Timestamp:
if t != nil {
data[k] = t.String()
}
}
}