簡體   English   中英

golang json解碼並帶有字段名

[英]golang json decode with field name

對於以下JSON

{
    "Jon": {
       "Age": 15
    },
    "Mary": {
       "Age": 17
    } 
}

我如何將其映射到golang結構中,通常,該結構將是

type Person struct {
    Name string `json:??,string`
    Age int `json:Age, int`
}

因為json字段名稱是struct的屬性,所以謝謝。

您必須使用自定義JSON編組

package main

    import (
        "encoding/json"
        "log"
        "fmt"
    )

    type Person struct {
        Name string `json:??,string`
        Age  int    `json:Age, int`
    }

    type People map[string]*Person

    func (p *People) UnmarshalJSON(data []byte) error {
        var transient = make(map[string]*Person)
        err := json.Unmarshal(data, &transient)
        if err != nil {
            return err
        }
        for k, v := range transient {
            v.Name = k
            (*p)[k] = v
        }
        return nil
    }

    func main() {

        jsonInput := `
        {
            "Jon": {
        "Age": 15
        },
            "Mary": {
        "Age": 17
        }
        }
    `

        var people People = make(map[string]*Person)

        err := people.UnmarshalJSON([]byte(jsonInput))
        if err != nil {
            log.Fatal(err)
        }

        for _, person := range people {
            fmt.Printf("%v -> %v\n", person.Name, person.Age)
        }
    }

暫無
暫無

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

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