我试图在使用 SQL.NullFloat64 和https://github.com/kisielk/sqlstruct包的代码中将 SQL 结果封送到 JSON 中。参考:https : //github.com/kisielk/sqlstruct/issues/11#issuecomment-143400458这个问题是我得到{ "Float64": 141, "Valid": true}导致 JSON 而不仅仅是值。按照上面 github 问题中的建议,我尝试创建一个自定义 MarshalText() 但它从未被调用。代码位于:https : //gist.github.com/fils/3f557941d71f1a7165ca生成的 JSON 位于:https : //gist.github.com/fils/a01cadcbb5dc7c797c3eCSV 转储功能仅可以获取和输出值,但不确定如何为 JSON 获得这种效果。使用 sql.NullFloat64 或自定义类型 NullFloat64 给出相同的结果。
1 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
你NullFloat64的不是encoding.TextMarshaler. 见http://play.golang.org/p/AepGgQkOd7:
prog.go:25: cannot use NullFloat64 literal (type NullFloat64) as type encoding.TextMarshaler in assignment:
NullFloat64 does not implement encoding.TextMarshaler (wrong type for MarshalText method)
have MarshalText() []byte
want MarshalText() ([]byte, error)
将您的方法更改为
func (nf NullFloat64) MarshalText() ([]byte, error) {
if nf.Valid {
nfv := nf.Float64
return []byte(strconv.FormatFloat(nfv, 'f', -1, 64)), nil
} else {
return []byte("null"), nil
}
}
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消