Запрашивая Геррита, они намеренно помещают )]}'
в начале своего ответа API, см. https://gerrit -review.googlesource.com / Documentation / rest-api-changes.html .Я пытаюсь удалить его, чтобы JSON действовал, но я не уверен, что лучший способ сделать это в Go
, это моя текущая программа для запроса gerrit и извлечения changeID и статуса из егоjson:
package main
import (
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"log"
"net/http"
)
type gerritData struct {
ChangeID string `json:"change_id"`
Status string `json:"status"`
}
func gerritQuery(gerrit string) (gerritData, error) {
username := "redacted"
password := "redacted"
client := &http.Client{}
req, err := http.NewRequest("GET", "https://gerrit.company.com/a/changes/?q="+gerrit, nil)
req.SetBasicAuth(username, password)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
respBody, err := ioutil.ReadAll(resp.Body)
// Trying to cut it out manually.
respBody = respBody[:len(respBody)-4]
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var gerritResponse gerritData
if err := json.NewDecoder(resp.Body).Decode(&gerritResponse); err != nil {
panic(err.Error())
}
return gerritResponse, nil
}
func main() {
gerritFlag := flag.String("gerrit", "foo", "The Gerrit you want to query")
flag.Parse()
gerritResponse, _ := gerritQuery(*gerritFlag)
fmt.Println(gerritResponse)
}
Го все еще жалуется с panic: invalid character ')' looking for beginning of value
.Я все еще плохо знаком с языком, поэтому любой совет был бы отличным.