2 回答

TA贡献1831条经验 获得超9个赞
当编译时密钥未知时,您实际上只能使用map[string]interface{}然后一些辅助函数来导航该结构。
如果键字面上是 a1、a2、a3 等......你可以制作一个实际的结构,但它不会很漂亮,因为你必须拼出每个键。
通常,当文档的键是数据的一部分时,您无法真正创建静态结构。
我所说的“部分数据”是指:
{
"billy":23,
"tommy":24
}
对比
[
{"name":"billy", "age":23},
{"name":"tommy", "age":24}
]
第二种形式可以表示为:struct { Name string, Age int }
而第一个实际上只能是: map[string]int 或 map[string]interface{} (如果结构很深)

TA贡献1821条经验 获得超6个赞
最好先定义所需的结构(将嵌套结构作为级别)。然后实现UnmarshalJSON([]byte) 错误接口将传入的数据转换为所需的结构。
我不想写很长的例子,除非我确定你想要什么 =) 我想采用与在 Go 中合并动态数据结构中使用的方法类似的方法。
你需要那些 "A1".."ZN", ("a1".."an")...("z1".."zn") 键吗?还是切片就足够了?喜欢:
type S struct {
ID bson.ObjectId
Data [][][]string
}
或者可能是内部转换 []string
[
"abc",
"def",
"ghi"
]
对于某些结构,如果只有 3 个元素?
- 2 回答
- 0 关注
- 306 浏览
添加回答
举报