Это похоже на распространенную проблему и может быть уже где-то опубликовано, но я не могу найти ни одной темы, говорящей об этом, поэтому вот проблема:
У меня есть таблица Postgres, хранящая столбец типа BYTEA
.
CREATE TABLE foo (
id VARCHAR PRIMARY KEY,
json_data BYTEA
)
Столбец json_data
на самом деле просто JSON хранится как BYTEA
(я знаю, что это не идеал). Он неструктурирован, но гарантированно имеет значение string -> string
JSON.
Когда я запрашиваю эту таблицу, мне нужно отсканировать запрос 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
реализовать существующий интерфейс, чтобы сделать это автоматически?