我需要解开扁平的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>值删除dataresult

var result UpdatePasswordRequest
json.Unmarshal([]byte(data), &result)

给出空的LoginPassword

result.SignInData.Login = ""
result.SignInData.Password = ""

我应该如何定义<tag>以获取LoginPassword字段的正确值?

分析解答

如果您要使用<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
}