Database 如何将JSON数据插入PostgreSQL

Database 如何将JSON数据插入PostgreSQL,database,go,psql,Database,Go,Psql,我有一个类似blow的json字段,我想将其存储在数据库中 { id: 1 name: "test entity 1" description: "a test entity for some guy's blog" status: "passed" web_url: "http://localhost:3000" jobs: [{ id: "1"

我有一个类似blow的json字段,我想将其存储在数据库中

{
      id:          1
      name:        "test entity 1"
      description: "a test entity for some guy's blog"
      status: "passed"
      web_url: "http://localhost:3000"
      jobs: [{
         id:        "1"
         name:      "test1"
         status:    "passed"
        },
        {
         id:        "2"
         name:      "test2"
         status:    "passed"
        },
        {
         id:        "3"
         name:      "test3"
         status:    "failed"
       }]
    }
我继续使用一种类似于创建表用途的方法:

CREATE TABLE test3 (id INT PRIMARY KEY, name VARCHAR, description VARCHAR, status VARCHAR, web_url VARCHAR, jobs JSON[]);
以及用于插入数据用途:

sqlStatement := `
            INSERT INTO jobs (id, name, description, status, web_url, jobs)
            VALUES ($1, $2, $3, $4, $5, $6)
            ON CONFLICT (id) DO UPDATE
            SET status = $4
            RETURNING id`
        id := 0
        err = database.Db.QueryRow(sqlStatement, y[i].ID, y[i].Name, y[i].Description, y[i].Status, y[i].WebURL, jobsdata).Scan(&id)
        if err != nil {
            panic(err)
        }
但是不行,需要帮助

获取错误:

panic: sql: converting argument $6 type: unsupported type handler.Jobs, a slice of struct
我想要的是:

postgres=# SELECT * FROM test3;
id |    name       |             description           | status  |       web_url          |                           jobs                           
------+------------------------------------------+--------+---------+----------------------------------------------------------+----------------------------------------------------------
 1 | test entity 1 | a test entity for some guy's blog | passed | https://localhost:3000 | {id: "1",name: "test1", status: "passed"},{id: "2",name: "test2", status: "passed"},{id: "3",name: "test3", status: "failed"}

如错误所示,您正试图从不受支持的数据类型
handler.Jobs
绑定第六个值。您还没有告诉我们这种类型是什么,但是从错误中可以清楚地看到,它没有实现接口,因此它无法工作,因为它无法知道如何向数据库表示该值

您需要通过将
Value()
方法添加到
处理程序.Jobs
类型或使用不同的数据类型来实现该接口。

sqlx中有一个类型,可以满足您的需要


当我试图使用(log.Infof(“-->”,jobsdata))打印jobsdata时,我得到了这个
INFO[0004]-->%!(额外处理程序.Jobs=[{36884 success aws cluster}{36885 success openebs aws deploy}{36903 failed app upgrade deployment}])
正常。我不确定这有什么关系?你有什么要说的吗?