Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在golang中解组json数组时出错_Json_Go_Unmarshalling - Fatal编程技术网

在golang中解组json数组时出错

在golang中解组json数组时出错,json,go,unmarshalling,Json,Go,Unmarshalling,此代码示例尝试解析json数组: 包干管 进口 fmt io/ioutil net/http 编码/json 类型MPkgInfo struct{ 名称字符串 版本字符串 } 类型ClojarsPkg struct{ jar_名称字符串 组名称字符串 版本字符串 } 类型clojarssearch结构{ 结果【】ClojarsPkg } func findPackageClojarsname字符串*MPkgInfo,错误{ s:=https://clojars.org/search?q=arti

此代码示例尝试解析json数组:

包干管 进口 fmt io/ioutil net/http 编码/json 类型MPkgInfo struct{ 名称字符串 版本字符串 } 类型ClojarsPkg struct{ jar_名称字符串 组名称字符串 版本字符串 } 类型clojarssearch结构{ 结果【】ClojarsPkg } func findPackageClojarsname字符串*MPkgInfo,错误{ s:=https://clojars.org/search?q=artifact-id:+name+&format=json 打印格式 res,err:=http.get 如果错误!=零{ 返回零,错误 } 克洛贾尔索普酒店 bs,err:=ioutil.ReadAllres.Body 格式打印字符串 err=json.Unmarshalbs,&resp 如果错误!=零{ 返回零,错误 } t:=相应结果[0] 返回和MPkgInfo{ 名称:t.group_name+/+t.jar_name, 版本:t.version, },零 } func main{ fmt.printlnfindpackageclojar\u结构 } 但是json响应没有被正确解析。我在访问数组元素时遇到索引超出范围错误。即使数组的长度为1,如println所示。

在解组时尝试err=json.Unmarshalbs,&resp.results。因此,结果数组将存储在resp.results中。

您需要修改字段,必要时可以使用指定json中的实际小写名称

type MPkgInfo struct {
    Name    string `json:"name"`
    Version string `json:"version"`
}

type ClojarsPkg struct {
    JarName   string `json:"jar_name"`
    GroupName string `json:"group_name"`
    Version   string `json:"version"`
}

type ClojarsSearchOp struct {
    Results []ClojarsPkg `json:"results"`
}
另一个: