0

是否有支持 PostgreSQL 版本 9.4 的 Go 语言的 PostgreSQL 库。PostgreSQL 9.4 支持 JSON 数据类型,想知道它是否可以与 Go 语言一起使用?

谢谢。

4

2 回答 2

2

是的,gopq应该支持 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...
}
于 2015-04-14T18:07:53.430 回答
0

我使用jmoiron/sqlx。对于任何不常见的数据类型,您可以实现valuerscanner接口。我已经使用这个包使用 Postgis 对地理点进行了此操作。

于 2015-04-14T17:54:54.767 回答