2 回答
TA贡献2080条经验 获得超4个赞
如果将单个嵌入式用户结构更改为用户列表,则需要在所有位置进行更改。Golang 是强类型的,一部分用户与单个用户结构是不同的类型。以下代码有效
package main
import (
"fmt"
"encoding/json"
)
type ReqJSON struct {
Request struct {
Data struct {
Object struct {
User []User `json:"user"`
} `json:"object"`
} `json:"data"`
} `json:"request"`
}
type User struct {
UserID string `json:"userid"`
IPAddr string `json:"ipaddr"`
Noofusers string `json:"noofusers"`
Qos string `json:"qos"`
ID string `json:"id"`
Domain string `json:"domain"`
}
func (j *ReqJSON) User() []User { return j.Request.Data.Object.User }
func (j *ReqJSON) SetUsers(u []User) { j.Request.Data.Object.User = u }
func main() {
var j ReqJSON
j.SetUsers([]User{
User{
UserID: "_id",
IPAddr: "1.1.1.1",
Noofusers: "100",
Qos: "34",
ID: "kldjflkdfjlkdjfkld",
Domain: "xyz.com",
},
})
b, err := json.MarshalIndent(j, "", " ")
fmt.Println(err, string(b))
}
TA贡献1876条经验 获得超7个赞
它显示错误,因为ReqJSON结构包含一个字段,User该字段是结构的一部分User,但是当您设置结构的值时,User您没有在设置函数内部传递用户结构的一部分。
type ReqJSON struct {
Request struct {
Data struct {
Object struct {
User []User `json:"user"` // this is a slice of User struct
} `json:"object"`
} `json:"data"`
} `json:"request"`
}
如果要初始化包含not切片的ReqJSON结构内部的字段,则需要在 Setter 函数中传递一个 User 结构切片。在 main 中传递用户结构的切片:UserUser
var u []User
u = append(u, User{
UserID: "_id",
IPAddr: "1.1.1.1",
Noofusers: "100",
Qos: "34",
ID: "kldjflkdfjlkdjfkld",
Domain: "xyz.com",
})
j.SetUser(u)
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报