簡體   English   中英

使用Go解析復雜的JSON

[英]Parsing complex JSON with Go

我在用Go消化一些嵌套的JSON時遇到問題。 我的主要問題是,我無法正確地對結構進行建模以嘗試獲取庫中的任何信息。這是JSON數據的示例: http : //pastebin.com/fcGQqi5z

數據來自銀行,並且已經過清理以保護隱私。 理想情況下,我只對交易ID,金額和說明感興趣。 有沒有一種方法可以通過Go提取這些值?

這是我最初的嘗試:

type Trans struct {
  TransId string
  Amount int
  Description string
}
type Records struct {
    Records []Record `json:"record"`
}

type Record struct {
    TransId string
    Amount float64
    Description string
}

func main() {
    r := Records{}
    if err := json.Unmarshal([]byte(data), &r); err != nil {
        log.Fatal(err)
    }

    fmt.Println(r)
}

您走在正確的軌道上:

type Trans struct {
    TransId     string
    Amount      float64
    Description string
}

func main() {
    var data struct {
        Record []Trans
    }
    if err := json.Unmarshal([]byte(j), &data); err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v\n", data.Record)
}

操場

//編輯

type Trans struct {
    TransId     string
    Amount      float64
    Description string
    RawInfo     []map[string]json.RawMessage `json:"AdditionalInfo"`
}

// also this assumes that 1. all data are strings and 2. they have unique keys
// if this isn't the case, you can use map[string][]string or something
func (t *Trans) AdditionalInfo() (m map[string]string) {
    m = make(map[string]string, len(t.RawInfo))
    for _, info := range t.RawInfo {
        for k, v := range info {
            m[k] = string(v)
        }
    }
    return
}

操場

暫無
暫無

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

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