为了创建类似表的结构,我在之前的应用程序中以以下格式序列化了行数据:
{ "key1": "...", "key2": "...", "15/04": 1.3, "15/05": 1.2, .... "17/08": 0.8 }
现在我正在尝试用 Go 重写它,以便通过实践经验来学习该语言。在 Go 中,可以通过将两个结构嵌入到另一个结构中来将它们组合在一起。从该结构中编组的 json 将具有平面结构,即生成的 json 对象将具有第一个和第二个结构的字段的并集,而无需嵌套。这是一个例子:https://play.golang.org/p/jbJykip7pw https://play.golang.org/p/jbJykip7pw (from http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/ http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/)
我猜我还可以将映射嵌入到结构中,以便我可以使用以下类型定义对 json 进行编组:
type Row struct {
key1 string
key2 string
RowData
}
type RowData map[string]float64
...
func main() {
row := Row{
"...",
"...",
RowData{
"15/04": 1.3, "15/05": 1.2, .... "17/08": 0.8,
},
}
}
但这在我的“Row”对象中创建了一个“RowData”字段,而不是将 RowData 中的条目附加到我想要的平面 json 对象中:
{ "key1": "...", "key2": "...", "RowData": { "15/04": 1.3, "15/05": 1.2, .... "17/08": 0.8 } }
我想知道,是否有一种方法可以将映射或切片嵌入到结构中,以便生成的 json 对象是平坦的,而不需要定义MarshalJSON
类型上的函数Row
?