我正在访问一个以以下形式返回 JSON 的 API:
[{"UniqueID":1234, "DocID":5678}, {"UniqueID":5678, "DocID":9101112}]
这个 API 是用 Go 编写的,示例输出是返回在浏览器中的显示方式。内容类型标头是 application/json
我有以下代码来检索和解组它:
type UniqueIDDocID struct{
UniqueID int64 `json: "UniqueID"`
DocID int64 `json: "DocID"`
}
type UniqueIDDocIDCollection struct{
FullList []UniqueIDDocID
}
func retrieveUniqueIDByPublication(nodeid int64, publication string){
// call the API
//hgr := new(retrieval.HttpGetRetrieval)
// endpoint is defined here - I have removed for privacy reasons
fmt.Println(endpoint) // the url which I know works
/*response, err := hgr.RequestResponse(endpoint)
if err != nil {
l4g.Warn("Could not retrieve the endpoint %s. Error: ", endpoint, err)
return
}
defer hgr.CloseResponse(response)
queryResult := hgr.ReadResponse(response)*/
client := new(http.Client)
request, err := http.NewRequest("GET", endpoint, nil)
if err != nil {
l4g.Warn("Could not retrieve the endpoint %s. Error: %v", endpoint, err)
return
}
request.Header.Set("Content-Type", "applicaiton/json")
response, err := client.Do(request)
if err != nil {
l4g.Warn("Could not retrieve the endpoint %s. Error: %v", endpoint, err)
return
}
defer response.Body.Close()
var reader io.ReadCloser
reader = response.Body
defer reader.Close()
queryResult, readErr := ioutil.ReadAll(reader)
if err != nil {
l4g.Warn("Could not retrieve the endpoint %s. Error: %v", endpoint, readErr)
return
}
if queryResult == nil {
l4g.Warn("Nothing returned %s.", endpoint)
return
}
var details UniqueIDDocIDCollection
// process return
if err:=json.Unmarshal(queryResult, &details); err != nil{
l4g.Warn("Failed to unmarshall return %v from %s", queryResult, endpoint)
return
}
writeUniqueIDFile(details)
}
我收到“无法解组”消息,日志中的详细信息显示如下:
[91 123 34 85 110 105 113 117 101 73 68 34 58 34 56 51 57 51 50 53 56 54 34 44 34 68 111 99 73 68 34 58 52 49 50 49 54 57 49 57 125 44 123 34 85 110 105 113 117 101]
作为代表样本。
在这个解组步骤中我做错了什么?
我想要的输出是 UniqueIDDocIDCollection 结构上有一个切片,其中包含 UniqueIDDocID 类型的项目,然后我可以从中获取 UniqueID 并将其写入行分隔的文件。
我一直在谷歌搜索并尝试了很多东西,但每次都是我得到的。
如果您也对源 JSON 有任何建议,请分享这些建议,因为我可以在 API 中进行更改。
感谢您提前内森的帮助