这是我以前遇到的问题,我不确定如何干净地解决这个问题。

我的json_data看起来像这样:

{
    "data": [{
        "0": {
            "first_name": "hello",
            "last_name": "world"
        },
        "1": {
            "first_name": "hello",
            "last_name": "world"
        }
    }]
}

问题是,此列表中的项目数量不确定。钥匙总是不间断的,顺序很重要,这就是为什么它们在那里。

我如何将其表示为结构?在打字稿中,i mihght将其键入[key:str]:{...},但我不知道该怎么做。

分析解答

how would i represent this as a struct? in Typescript ...

对于那些学习在解释性语言(例如Typescript或Python)经验后,这是一个常见的绊脚石,这是一件好事,可以立即熨烫。

在其他语言中,用户定义的对象由包含哈希映射的相同基础类型表示,以动态关联属性和方法名称与基础值和函数。因此,可以随时将属性添加到对象中,因为它实际上只是一个动态集合。

在GO中,结构字段是静态的。这些字段是在编译时在源代码中定义的,应使用名称使用点运算符。字段名称是符号,而不是变量。

在Go中,您永远不会像动态定义的key/value对集一样对待结构。仅当有一个明确定义的键可以合理地将符号转换为代码中的符号时,结构才有意义。

您在JSON中的数据结构看起来有些愚蠢(如果键正在升级整数,那只是一个列表),但是假设这不取决于您,我建议您建模类似的东西。

type name struct {
    First_name, Last_name string
}
type fulldata struct {
    Data []map[string]name
}

工作示例在这里:https://go.dev/play/p/gBtrRoceeTL