func handleQuery(w http.ResponseWriter, db nosql.Database, query string, r *http.Request) { if r.Method != "GET" { http.Error(w, "unsupported HTTP method", 400) return } headers, rs, err := db.Exec(ctx, query) if err != nil { http.Error(w, fmt.Sprintf("error in db.Exec(): %v", err), 500) return } fmt.Printf("Headers: %v\n", headers) results := []map[string]string{} for rs.Advance() { rowVals := rs.Result() result := map[string]string{} for i, elem := range rowVals { // TODO(bprosnitz) This assumes that we have string values result[headers[i]] = elem.String() } results = append(results, result) } jsondat, err := json.Marshal(results) if err != nil { http.Error(w, "error generating JSON", 500) return } w.Header().Add("Content-type", "Application/json") w.Write(jsondat) }