簡體   English   中英

Golang中來自json的Struct的地圖

[英]Map of Struct from json in Golang

所以我正在嘗試將json解析為一些結構,並且可以在以下情況下正常工作:

type train struct {
 ID     string  `json:"id"`
 Price  float64 `json:"price,string"`
 Distance float64 `json:"Distance,string"`
}

type Station struct {
 ID       int64  `json:"id,string"`
 arrTrain []train`json:"arr"`
 depTrain []train`json:"dep"`
}

但是,問題在於,我希望能夠使用它們的ID輕松引用arrTrain和depTrain中的項目,因此我認為我需要更改Station結構以將arrTrain和depTrain作為以ID為鍵的映射。 解析json時是否有可能,還是必須對其進行“后處理”?

編輯:如評論之一所述,不幸的是我的json是以下形式:

{
  "id":1, 
  "arr": [
     {"id":"one","price":"$10.1","Distance":"100km"},
     {...}
  ],
  "dep":[
    {"id":"one","price":"$10.1","Distance":"100km"},
    {...}
  ]
}

換句話說,該ID不在json對象的外部,並且arrTrain是list。

是的,您可以這樣定義樁號:

type Station struct {
    ID       int64            `json:"id,string"`
    arrTrain map[string]train `json:"arr"`
    depTrain map[string]train `json:"dep"`
}

而且您的JSON應該像這樣

{
  "id":1, 
  "arr": {
    "one":{"id":"one","price":"$10.1","Distance":"100km"},
    "two":...
  },
  "dep":{
    "one":{"id":"one","price":"$10.1","Distance":"100km"},
    "two":...
  }
}

編輯:是的,您可以。 (此答案的較早版本聲明鍵只能是字符串,但從1.7開始,這是不正確的)

您可以在這個游樂場中看到這一點

另外,正如conner在評論中指出的那樣,您的字段名稱必須可導出才能使encoding / json起作用

type Station struct {
    ID       int64            `json:"id,string"`
    ArrTrain map[string]train `json:"arr"`
    DepTrain map[string]train `json:"dep"`
}

暫無
暫無

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

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