欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go json 沒有key

劉柏宏1年前9瀏覽0評論

Go語言中的JSON(JavaScript Object Notation)操作是非常方便的。通常,JSON會以一個對象的形式被解析和序列化。但是,有時你想要解析JSON數(shù)據(jù)而無法確定數(shù)據(jù)結(jié)構(gòu)中的鍵。這時候,Go語言中的JSON包可以幫助你。

JSON包提供了一個Type別名為json.RawMessage的類型,它可以存儲任意的JSON。在你不確定JSON數(shù)據(jù)中的鍵的時候,你可以使用這個特殊的類型。為了演示這個類型,我們假設(shè)我們從外部系統(tǒng)獲取了以下的JSON數(shù)據(jù):

data := `[
{
"id": 1,
"name": "Alice"
},
{
"id": 2,
"name": "Bob"
}
]`

在我們沒有確定JSON數(shù)據(jù)中的鍵時,我們可以使用json.RawMessage類型來存儲數(shù)據(jù)。以下是一個使用json.RawMessage類型處理JSON數(shù)據(jù)的例子:

type User struct {
ID   int    `json:"id"`
Name string `json:"name"`
}
func main() {
var data []json.RawMessage
if err := json.Unmarshal([]byte(data), &data); err != nil {
fmt.Println(err)
}
var users []User
for _, rawMsg := range data {
var user User
if err := json.Unmarshal(rawMsg, &user); err != nil {
fmt.Println(err)
continue
}
users = append(users, user)
}
fmt.Printf("%+v", users)
}

注意,我們使用了range關(guān)鍵字遍歷數(shù)據(jù)并在每次迭代中對JSON解析了一次。盡管這個例子很簡單,但我們可以利用json.RawMessage類型來處理更加復(fù)雜的JSON數(shù)據(jù)。