我有一个:
type User struct {
UID int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Sex int `json:"sex"`
Nickname string `json:"nickname"`
ScreenName string `json:"screen_name"`
BDate string `json:"bdate"`
}
代码:
var userList []*User
json.Unmarshal(resp.Response, &userList)
服务器响应可能是:
[{"id":1,"first_name":"name","last_name":"last","sex":2,"nickname":"","screen_name":"screen","bdate":"1.1.1"}]
或
[{"id":1,"first_name":"name","sex":2,"nickname":"","screen_name":"screen"}]
我在调用不存在的KEY错误运行时“ userList[0].LastName
”时遇到的问题:
error: index out of range
在第一种情况下,服务器返回:
"last_name":"last" and "bdate":"1.1.1"
第二个否
没有用户时,服务器将返回。
[{"error_code": 0, "error_msg": "Invalid user id"}]
answer:
if len(userList) > 0 {
c.String(http.StatusOK, "People name: %s", userList[0].FirstName)
} else {
c.String(http.StatusOK, "No People: %s", login)
}
谢谢Magestro
答案 0 :(得分:0)
error: index out of range
表示userList
没有索引为[0]
的值,而不是空的LastName
在您的示例中,一切正常:https://play.golang.org/p/WHIqgB52w_I
确定服务器返回有效字符串并且该字符串存在于resp.Response
中吗?
尝试打印resp.Response
,然后在其他地方查找错误