【问题标题】:Golang Changeable fieldGolang 可变字段
【发布时间】:2021-12-08 02:13:42
【问题描述】:

我想知道是否可以为 golang 制作一个可变结构。 事情就是这样。 JSON有不同的对象。 它始终包含“元”,但“数据”将如下更改。

{"meta":{"A":"AA, "B":"BB"}, "data":{"C":"CC"}}
{"meta":{"A":"DD, "B":"EE"}, "data":{"F":"FF"}}

在我的 golang 代码中,有很多 JSON 结构,如下所示。

type meta struct {
    A  string  `json:"A"`
    B float64 `json:"B"`
}

type data1 struct {
    C int64 `json:"C"`
}

type JSON1 struct {
    MetaData meta `json:"meta"`
    Contents data1 `json:"data"`
}

type data2 struct {
    C int64 `json:"F"`
}

type JSON2 struct {
    MetaData meta `json:"meta"`
    Contents data2 `json:"data"`
}

所以,我需要定义所有的结构。 有什么办法可以让 Contents 字段可变以减少 JSON"A"、"B" 的定义?

感谢您提前回复。

【问题讨论】:

  • 试试Contents interface{} `json:"data"`

标签: json go variables struct field


【解决方案1】:

您可以使用map[string]interface{}

type JSON struct {
    MetaData meta                   `json:"meta"`
    Contents map[string]interface{} `json:"data"`
}

然后访问如下数据:

var d JSON
...
content, ok := d.Contents["F"] // ok is false if "F" is not present

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2022-12-19
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多