簡體   English   中英

Golang json 解組

[英]Golang json unmarshall

我是 Go 的新手。 我有這樣的json:

{
  "3415": {
    "age": 25,
    "name": "Tommy"
  },
  "3414": {
    "age": 21,
    "name": "Billy"
  }
}

我想將它解組為結構:

type People struct {
    Id map[string]PeopleDetails
}

type PeopleDetails struct {
    Age int `json:"age"`
    Name string `json:"name"`
}

但是當我運行它時,我看到該結構返回 nil 值。 我確實閱讀了一些教程,但其中大多數都有預定義的鍵,正如您在此處看到的“id”,例如 3415 對於每個新的 json 都是不同的。

當您必須處理“動態”json 鍵時,答案是使用結構映射。

您可以使用以下代碼:

package main

import (
    "encoding/json"
    "fmt"
)

// Use the struct pointed by @Adirio
type People map[string]PeopleDetails
type PeopleDetails struct {
    Age  int    `json:"age"`
    Name string `json:"name"`
}

var data string = `{"3415":{"age":25,"name":"Tommy"},"3414":{"age":21,"name":"Billy"}}`

func main() {
    var p People
    if err := json.Unmarshal([]byte(data), &p); err != nil {
        fmt.Println(err)
    }
    fmt.Println(p)
}

GoPlayground: https : //play.golang.org/p/kVzNV56NcTd

嘗試使用這些類型:

type People map[string]PeopleDetails

type PeopleDetails struct {
    Age int `json:"age"`
    Name string `json:"name"`
}

暫無
暫無

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

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