json - 使用 Go 解析复杂的 JSON

标签 json parsing go

我在使用 Go 消化一些嵌套的 JSON 时遇到问题。我的主要问题是我无法正确建模我的结构以尝试让库提取任何信息。这是 JSON 数据的示例:http://pastebin.com/fcGQqi5z

这些数据来自一家银行,并且已经过隐私保护。理想情况下,我只对交易 ID、金额和描述感兴趣。有没有办法用 Go 提取这些值?

这是我最初的尝试:

type Trans struct {
  TransId string
  Amount int
  Description string
}

最佳答案

你走在正确的轨道上:

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)
}

playground

//编辑

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
}

playground

关于json - 使用 Go 解析复杂的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180873/

相关文章:

java - 如何仅针对一种方法或 Controller 类禁用 Jersey POJOMappingFeature

php - PHP/Codeigniter/jQuery/MySQL 的最佳数据访问方法

c++ - 无法在 VS Code 中多次使用预启动任务

go - 如何将 json 解码为 [] 人?

Go:如何创建类型为 schema.ResourceData 的实例以进行单元测试?

javascript - 获取 api,为什么我必须在响应 json() 上使用 then,试图使 promise 有意义

java - Android-解析本地JSON数据(assets文件夹)

python - 解析 GTF 基因文件

java - 检查 double 型变量不应包含字母数字字符串或字符

go - 可以在 Go 中调用 call-cc 吗?