code: func valuesToJSON(in map[string]bigquery.Value) (map[string]bqapi.JsonValue, error) {
  	if len(in) == 0 {
  		return nil, nil
  	}
  	out := make(map[string]bqapi.JsonValue, len(in))
  	for k, v := range in {
  		blob, err := json.Marshal(v)
  		if err != nil {
  			return nil, errors.Annotate(err, "failed to JSON-serialize key %q", k).Err()
  		}
  		out[k] = json.RawMessage(blob)
  	}
  	return out, nil
  }
docs: // valuesToJSON converts bigquery.Value map to a simplest JSON-marshallable
  // bqapi.JsonValue map.
  //
  // bigquery.Value can actually be pretty complex (e.g. time.Time, big.Rat),
  // which makes it difficult to put into gob-encodable rawEntry.
  //
  // So instead we convert it to JSON before putting into Gob (bqapi library does
  // it later anyway). But since BigQuery API wants a map[string]bqapi.JsonValue
  // we return map[string]json.RawMessage instead of complete raw []byte.