Json Go语言和PostgreSQL 9.4

Json Go语言和PostgreSQL 9.4,json,go,postgresql-9.4,Json,Go,Postgresql 9.4,是否有支持PostgreSQL 9.4版的用于Go语言的PostgreSQL库。 PostgreSQL 9.4支持JSON数据类型,是否可以与Go语言一起使用 谢谢。我用。对于任何不常见的数据类型,您可以实现valuer和scanner接口。我已经使用这个包为地理点和Postgis完成了这项工作。是的,应该支持PostgreSQL v9.4,并且它基本上支持JSON类型作为字符串(似乎已经实现了) 您可以对JSON字符串进行后期处理,也可以使用自定义“扫描”方法创建自定义类型: 请不要忽略“示例

是否有支持PostgreSQL 9.4版的用于Go语言的PostgreSQL库。 PostgreSQL 9.4支持JSON数据类型,是否可以与Go语言一起使用

谢谢。

我用。对于任何不常见的数据类型,您可以实现
valuer
scanner
接口。我已经使用这个包为地理点和Postgis完成了这项工作。

是的,应该支持PostgreSQL v9.4,并且它基本上支持JSON类型作为字符串(似乎已经实现了)

您可以对JSON字符串进行后期处理,也可以使用自定义“扫描”方法创建自定义类型:


请不要忽略“示例”代码中的错误(根据定义,这几乎是不正确的代码)。你知道,有些傻瓜会盲目地剪贴,养成这样做的习惯,然后问一个充满代码的问题,而忽略那些本来可以告诉他们问题所在的错误,从而使其他回答者的生活变得困难@达维克:当然,这是合法的,但我真的在这个问题上左右为难。我通常会尽可能少地发布代码,以清楚地展示我的意图(而不是淹没在细节中),因此错误处理和清理之类的事情经常被忽略。我有责任确保剪贴傻瓜不会把自己的脚摔下来吗?@DaveC:我发布了一个元问题,因为我认为你的观点是正确的。事实上,用一个简单的答案处理所有可能的案例会很快变得令人分心的冗长。我不会抱怨,除非我看到太多的问题,如果不知道被忽略的错误就无法回答;他们从某处得到了他们的例子。就我个人而言,我至少陷入了恐慌或
//检查错误注释;(对于
rows.Scan
)等内容,它甚至更为隐藏。请注意,基本JSON数据类型是在9.2中添加的。Postgresql 9.4添加了支持运算符超集的jsonb数据类型。
// 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}"}
}
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...
}