我需要解开扁平的json string
data := `{"login":"Nickname","password":"some_pass","newPassword":"new_pass"}`
进入UpdatePasswordRequest
嵌套结构:
type SignInRequest struct {
Login string `json:"login"`
Password string `json:"password"`
}
type UpdatePasswordRequest struct {
NewPassword string `json:"newPassword"`
SignInData SignInRequest `<tag>`
}
将所有可能的<tag>
值删除data
到result
var result UpdatePasswordRequest
json.Unmarshal([]byte(data), &result)
给出空的Login
和Password
:
result.SignInData.Login = ""
result.SignInData.Password = ""
我应该如何定义<tag>
以获取Login
和Password
字段的正确值?
分析解答
如果您要使用<tag>
的名称,则您的JSON应该是嵌套而不是平坦的,因此:
data := `{"newPassword":"new_pass", "myTag":{"password":"some_pass", "login":"Nickname"}}`
如果您无法更改JSON,则应像这样构成结构(又称结构嵌入):
type SignInRequest struct {
Login string `json:"login"`
Password string `json:"password"`
}
type UpdatePasswordRequest struct {
NewPassword string `json:"newPassword"`
SignInRequest
}