在处理我的第一个 Go 项目时,我在思考一些复杂的数据结构时遇到了一些麻烦。目前,我正在模拟来自 API的响应,该 API 将返回一个包含 2 个属性的 JSON 对象:
columns 包含按应处理顺序排列的字段数组
data 包含一个对象数组,其中包含列在中的属性 columns
我需要迭代data数组/切片,并在其中迭代columns数组/切片并从当前数据对象中提取当前属性。我没有正确处理数据结构。大量的试验和错误让我留下了以下代码和足够的挫败感,决定我只需要提出这个问题。
res, err := http.Get("http://roadmap-proto.robwilkerson.org/demo.json")
failOnError(err, "Uh oh")
defer res.Body.Close()
// Decode and process the JSON response
// var v map[string]interface{}
type View struct {
Columns []string `"json:columns"`
Data map[string]interface{} `"json:data"`
}
v := View{}
json.NewDecoder(res.Body).Decode(&v)
log.Printf("[====>] Data: %s", v)
的输出log.Printf()是这样的:
Data: {[id avatar name email phone address] map[]}
在columns似乎看还好,而不是数据。最终我需要遍历它并将每个字段写入 Excel 单元格,但到目前为止我什至无法正确“加载”数据。
任何朝着正确方向的推动将不胜感激。
更新
我无意中遗漏了一些关键信息:在对 API 的任何给定调用中,列的数量和名称可能不同。在给定的调用中,data数组中的所有对象都相同,但每次调用都可能非常非常不同。我无法定义静态struct并进行这项工作。
郎朗坤
相关分类