我的golang程序具有这种结构结构:
type JSONDoc struct {
Count int `json:"count"`
Objects []uintptr `json:"objects"`
}
type ObjectA struct {
FieldA string
}
type ObjectB struct {
FieldB string
}
我不知道JSONDoc.Objects中可以有哪些对象类型,我需要在json数组中存储多个结构。 Reflect
返回指向结构的指针,我将它们附加到struct,但结果json中的encoding/json
包用整数地址替换指针。
同样不安全.Pointer也不能被encoding/json
解析。
只想让结果json看起来像
{
"count":2,
"objects":
[
{"FieldA":"..."},
{"FieldB":"..."}
]
}
如何存储指向正确编码为json的结构的指针?
答案 0 :(得分:2)
您可以使用interface{}
,例如:
type JSONDoc struct {
Count int `json:"count"`
Objects []interface{} `json:"objects"`
}
func main() {
doc := JSONDoc{Count: 2}
doc.Objects = append(doc.Objects, &ObjectA{"A"}, &ObjectB{"B"})
b, err := json.MarshalIndent(&doc, "", "\t")
fmt.Println(string(b), err)
}