我想得到 "靴子 "的值
我的函式mainvarjson:=`{
"識別符號": "1",
"名稱": "dumbname",
"人": {
"物品": 空。
"庫存": [
{
"T-shirt": "黑色",
"背包": {
"BigPocket": {
"法術": "愈合",
"靴子": "速度",
"香波": "Head & Shoulders"
}
}
}
],
"口袋": null
}
}`
var res map[string]interface{}。
json.Unmarshal([]byte(varjson), &res)
測驗(res)
測驗函式
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
s := reflect.ValueOf(t)
for i := 0; i < s.Len(); i {
fmt.Println(s.Index(i))
}
}
}
但是當我編譯的時候,我什么都沒有得到。 如果有其他方法來獲取Json中的 "boot "值?
uj5u.com熱心網友回復:
假設你可以使用型別,基于你的評論(感謝導致完全同意colm,試圖反映結構是粗糙的。
一旦你有了一個型別,它就超級容易瀏覽了。
具體來說 fmt.Println(res.Person.Inventory[0].Backpack.BigPocket.Boots)package main
import (
"encoding/json"/span>
"fft"
)
type AutoGenerated struct {
識別符號 string `json: "identifier"`/span>
姓名 string `json: "name"`/span>
人物 結構 {
專案 interface{}。`json: "items"`
Inventory []struct {
TShirt string `json: "T-shirt"`
背包 結構 {
BigPocket struct {
咒語 string `json: "spell"` {
靴子 string `json: "boots"`/span>
洗發水 string `json: "shampoo"`
} `json: "BigPocket"` }
} `json: "Backpack"` }
} `json: "catalogue"` }
口袋 interface{}。`json: "Pockets"` interface{}。
} `json: "person"` }
}
func main() {
varjson := `{
"識別符號"。"1",
"名稱": "dumbname",
"人": {
"物品": 空。
"庫存": [
{
"T-shirt": "黑色",
"背包": {
"BigPocket": {
"法術": "愈合",
"靴子": "速度",
"香波": "Head & Shoulders"
}
}
}
],
"口袋": null
}
}`
var res AutoGenerated
json.Unmarshal([]byte(varjson), &res)
fmt.Println(res.Person.Inventory[0].Backpack.BigPocket.Boots)
}
在你的原文中,錯誤之處在于你的switch陳述句只覆寫了一個片斷,但初始物件是一個地圖。所以你的switch最初沒有找到匹配的物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329385.html
標籤:
上一篇:使用GoSDK2獲取AmazonS3中的檔案夾的大小
下一篇:安全第二天
