gpt4 book ai didi

arrays - 如何过滤掉 Gerrit JSON api 响应的前几个坏字符

转载 作者:IT王子 更新时间:2023-10-29 02:30:39 27 4
gpt4 key购买 nike

在查询 Gerrit 时,他们故意在其 api 响应的开头放置一个 )]}',请参阅:https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html .我试图删除它以便 JSON 有效,但我不确定在 Go 中执行此操作的最佳方法

这是我当前的程序,用于查询 gerrit 并从其 json 中提取 changeID 和状态:

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)
}

Go 仍在提示 panic: invalid character ')' looking for beginning of value。我对这门语言还是陌生的,所以任何建议都会很棒。

最佳答案

问题中的代码从响应末尾删除了四个字节。

修剪响应开头的字节:

 respBoby = respBody[4:]

关于arrays - 如何过滤掉 Gerrit JSON api 响应的前几个坏字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56960370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com