我正在使用Instagram API编写应用程序。
我收到JSON请求,并且将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // the nested structs type ResponseData struct { ID string `json:"id"` Link string `json:"link"` Type string `json:"type"` User struct { FullName string `json:"full_name"` ID int `json:"id"` ProfilePicture string `json:"profile_picture"` Username string `json:"username"` } Images struct { Standard_Resolution struct { URL string `json:"url"` } } } |
对于要添加的图像URL,它需要在
don't use underscores in Go names; struct field Standard_Resolution
should be StandardResolution
还有另一种方法可以修复错误,但仍在结构中包含值。
更新:
我可以在
1 2 3 | StandardResolution struct { URL string `json:"url"` } `json:"standard_resolution"` |
-
我认为您也可以在结构类型上使用标签。 只需通过
json:"Standard_Resolution" "重命名"您的StandardResolution结构。 Go真的是死常规。 我没有尝试过。 - 一个最小的工作示例将有助于使用普通编译器进行调试。 我的golang.org语言规范说golang.org/ref/spec#IdentifierList下划线是标识符的有效部分
-
但是添加
json:"Standard_Resolution" 也应该有所帮助,并且应该使事情更清楚。 -
我没有意识到我可以通过在花括号后面添加
json:"Standard_Resolution" 重命名我的结构,我在单词struct 之后添加它,因此出现错误。 谢谢@volker @ikrabbe - 您意识到,如果转换为非嵌套的结构定义,如下面我试图回答的那样。
-
@ikrabbe"无下划线"问题是
go vet (Go Plus将运行)的样式建议,而不是"破坏OPs程序"问题。
无论如何,如果您不使用嵌套结构,则更易于阅读。
1 2 3 4 5 6 7 8 9 10 | type RDUser struct { ... } type RDStandardResolution struct { ... } type RDImages struct { StandardResolition RDStandardResolution `json:"standard_resolution"` } type ResponseData struct { ... User RDUser `json:"user"` Images RDImages `json:"images"` } |