簡體   English   中英

在沒有所有鍵名的情況下解碼Go中的JSON

[英]Decoding JSON in Go without all key names

我是Go的新手,我試圖通過向Unmarshal提供結構來解碼json blob。 麻煩的是,我不知道某些鑰匙。 我可以解析以下內容

{"age":21,"Travel":{"fast":"yes","sick":false} }

像這樣

type user struct {
    Age int
    Travel TravelType
}

type TravelType struct {
    Fast string
    Sick bool
}


func main() {
    src_json := []byte(`{"age":21,"travel":{"fast":"yes","sick":false}}`)
    u := user{}
    err := json.Unmarshal(src_json, &u)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%v", u)

}

獲得{21 {yes false}}

但是,我不明白我會如何接近這樣的事情 -

{
  "age":21,
  "Travel":
     {
         "canada":
         {"fast":"yes","sick":false}, 
         "bermuda": 
         {"fast":"yes","sick":false}, 
         "another unknown key name":
         {"fast":"yes","sick":false},
     }
}

沒有在結構中明確宣布“加拿大”,“百慕大”等。 我如何使用Unmarshal來解析上面的json? 我找到了這個答案 ,但沒看到它是如何實現的

您可以將地map[string]TravelType組為map[string]TravelType 將您的user結構更改為此,您應該很高興:

type user struct {
        Age    int
        Travel map[string]TravelType
}

這是Go Playground上的一個有效的概念驗證: http//play.golang.org/p/-4k9GE5ZlS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM