在后端,我向一些第三方网站发送http请求,并检索一些json数据作为响应。json响应中的键并不总是相同的,但我对它们可能是什么有一些想法。举例来说:
向example.com/data/1
发送请求可能会导致以下结果:
{
"File.Trimmed": 54,
"Feature": "Generic"
}
字符串
而请求example.com/data/2
可能会带来以下问题:
{
"File.Trimmed": 83,
"Object.Notation": "Reverse"
}
型
我的目标是在前端使用与响应中完全相同的键-值对呈现html表。
所以第一个表是:
| B栏| Column B |
| --| ------------ |
| 五十四| 54 |
| 通用| Generic |
第二张table:
| B栏| Column B |
| --| ------------ |
| 八十三| 83 |
| 反转| Reverse |
我创建了以下struct来处理这些数据:
type FileDetails struct {
FileTrimmed int `json:"File.Trimmed,omitempty"`
Feature string `json:"Feature,omitempty"`
ObjectNotation string `json:"Object.Notation,omitempty"`
}
// cannot use map[string]interface{} because that would destroy the order
var data FileDetails
err = json.NewDecoder(res.Body).Decode(&data)
型
此时我正在努力将data
发送到模板并呈现表。可以使用reflect
从struct示例中获取json标记(列A的内容),但是是否可以在模板中的{{range}}循环中获取字段名称?如果可能的话,怎么做?
有没有更好的方法来实现我的主要目标?
1条答案
按热度按时间de90aj5v1#
JSON响应中的键并不总是相同的
如果键不总是相同的,最好使用
map
而不是struct
。就像你说的that would destroy the order
。当
you have some idea of what they might be
时我们可以尝试的一种方法map[string]interface{}
这是样品
字符串
这将使内容按顺序打印。