Существует ли библиотека PostgreSQL для языка Go, которая поддерживает PostgreSQL версии 9.4. PostgreSQL 9.4 поддерживает тип данных JSON, и вам интересно, можно ли его использовать с языком Go?
Спасибо.
Существует ли библиотека PostgreSQL для языка Go, которая поддерживает PostgreSQL версии 9.4. PostgreSQL 9.4 поддерживает тип данных JSON, и вам интересно, можно ли его использовать с языком Go?
Спасибо.
Да, библиотека go pq
должна поддерживать PostgreSQL v9.4 и имеет базовую поддержку типов JSON в виде строк ( которые, кажется, были добавлены в v9.2).
// CREATE TABLE foo (id SERIAL PRIMARY KEY, stuff json);
// INSERT INTO foo (stuff) VALUES ('{"x":123}');
type Foo struct {
Id int,
Stuff string,
}
rows, err := db.Query("SELECT * FROM foo LIMIT 1") // TODO: handle error
defer rows.Close()
for rows.Next() {
foo := Foo{}
err = rows.Scan(&foo.Id, &foo.Stuff) // TODO: handle error
# main.Foo{Id:1, Stuff:"{\"x\":123}"}
}
Вы можете либо обработать строку JSON, либо создать собственный тип с помощью специального метода «Сканировать»:
type Foo struct {
Id int,
Stuff MyStuff,
}
func (e *MyStuff) Scan(value interface{}) error {
// Value should be a []byte of the JSON string.
// Do whatever you want with it here...
}
// check error!!
комментарий; (это еще более скрыто для таких вещей, как rows.Scan
).
- person Dave C; 14.04.2015
Я использую jmoiron/sqlx. Для любых не распространенных типов данных вы можете реализовать интерфейсы valuer
и scanner
. Я сделал это для географических точек с Postgis, используя этот пакет.