title: Storing Golang JSON into Postgresql
body: <p>I want to store a certain struct into my database that has a JSON field within it.</p>
  
  <pre><code>type Comp struct {
      CompId               int64           `db:"comp_id" json:"comp_id"`
      StartDate            time.Time       `db:"start_date" json:"start_date"`
      EndDate              time.Time       `db:"end_date" json:"end_date"`
      WeeklySchedule       json.RawMessage `db:"weekly_schedule" json:"weekly_schedule"`
  }
  </code></pre>
  
  <p>The schema for the table is:</p>
  
  <pre><code>CREATE TABLE IF NOT EXISTS Tr.Comp(
      comp_id                 SERIAL,
      start_date              timestamp NOT NULL,
      end_date                timestamp NOT NULL,
      weekly_schedule         json NOT NULL,
      PRIMARY KEY (comp_id)
  );
  </code></pre>
  
  <p>I am using sqlx and lib/pq driver in my project and the following will not execute. Instead it panics saying there is a nil pointer. DB is a global <code>*sqlx.DB</code> struct</p>
  
  <pre><code>    tx := DB.MustBegin()
  
      compFixture := Comp{
          StartDate:            time.Now(),
          EndDate:              time.Now().AddDate(1, 0, 0),
          WeeklySchedule:       json.RawMessage([]byte("{}")),
      }
      _, err = tx.NamedExec(
          `INSERT INTO 
              Tr.Comp(comp_id, 
                  start_date, end_date, weekly_schedule) 
              VALUES (DEFAULT, 
                  :start_date, :end_date, :weekly_schedule)  
              RETURNING comp_id;`, compFixture)
      if err != nil {
          t.Fatal("Error creating fixture.", err)
      }
  </code></pre>
  
  <p>When I remove <code>weekly_schedule</code> from the schema and fixture things run fine. But for some reason, the when this field is included, the program panics. Any idea as to how I should define the <code>weekly_schedule</code> field in both my DB schema and Go struct?</p>