这似乎是一个常见问题,可能已经在某个地方发布了,但我找不到任何讨论它的线程,所以这里是问题:
我有一个存储类型列的 Postgres 表BYTEA。
CREATE TABLE foo (
id VARCHAR PRIMARY KEY,
json_data BYTEA
)
该列json_data实际上只是 JSON 存储为BYTEA(我知道这并不理想)。它是非结构化的,但保证是string -> stringJSON。
当我查询此表时,我需要将查询扫描SELECT * FROM foo WHERE id = $1到以下结构中:
type JSONData map[string]string
type Foo struct {
ID string `db:"id"`
Data JSONData `db:"json_data"`
}
我正在使用sqlx的Get方法。当我执行查询时,我收到错误消息sql: Scan error on column index 1, name "json_data": unsupported Scan, storing driver.Value type []uint8 into type *foo.JSONData。
显然,扫描器无法将 JSON 扫描BYTEA到地图中。我可以实现我自己的扫描仪并在列上调用我的自定义扫描仪json_data,但我想知道是否有更好的方法来做到这一点。我的JSONData类型可以实现现有接口来自动执行此操作吗?
www说
相关分类