2 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果將單個(gè)嵌入式用戶結(jié)構(gòu)更改為用戶列表,則需要在所有位置進(jìn)行更改。Golang 是強(qiáng)類型的,一部分用戶與單個(gè)用戶結(jié)構(gòu)是不同的類型。以下代碼有效
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貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
它顯示錯(cuò)誤,因?yàn)镽eqJSON結(jié)構(gòu)包含一個(gè)字段,User該字段是結(jié)構(gòu)的一部分User,但是當(dāng)您設(shè)置結(jié)構(gòu)的值時(shí),User您沒(méi)有在設(shè)置函數(shù)內(nèi)部傳遞用戶結(jié)構(gòu)的一部分。
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結(jié)構(gòu)內(nèi)部的字段,則需要在 Setter 函數(shù)中傳遞一個(gè) User 結(jié)構(gòu)切片。在 main 中傳遞用戶結(jié)構(gòu)的切片: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 關(guān)注
- 144 瀏覽
添加回答
舉報(bào)