如何在解组时将整个 json 字符串传递到嵌套结构的字段?

问题描述 投票:0回答:1

我需要解组平面 json 字符串

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>`
}

使用所有可能的

data
值将
result
解组到
<tag>

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

给出空的

Login
Password

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

我应该如何定义

<tag>
才能获得
Login
Password
字段的正确值?

go struct tags
1个回答
0
投票

如果您要使用

<tag>
的名称,您的 json 应该是嵌套的,而不是扁平的,如下所示:

data := `{"newPassword":"new_pass", "myTag":{"password":"some_pass", "login":"Nickname"}}`

如果你不能改变你的json,应该像这样组成结构(又名.struct embedding):

type SignInRequest struct {
    Login    string `json:"login"`
    Password string `json:"password"`
}

type UpdatePasswordRequest struct {
    NewPassword string        `json:"newPassword"`
    SignInRequest
}
© www.soinside.com 2019 - 2024. All rights reserved.