我想创建一个动态结构。我正在使用一些命令以JSON格式获取一些信息,并希望将其解组到一个结构中。Json如下所示:

{
"blockdevices": [
    {
        "disk_name": "sda",
        "mountpoint": null,
        "size": "50G",
        "fstype": "mpath_member",
        "partitions": [
            {
                "disk_name": "sda1",
                "mountpoint": null,
                "size": "20G",
                "fstype": "vfat"
            },
            {
                "name": "3600a09803830566e615d5171774a3837",
                "mountpoint": null,
                "size": "50G",
                "fstype": null,
                "partitions": [
                    {
                        "disk_name": "3600a09803830566e615d5171774a3837-part1",
                        "mountpoint": "/myData",
                        "size": "20G",
                        "fstype": "vfat",
                        "partitions": [
                            {
                                "disk_name": "3600a09803830566e615d5171774a3837-part2",
                                "mountpoint": "/myData2",
                                "size": "10G",
                                "fstype": "vfat"
                            }
                        ]
                    }
                ]
            }
        ]
    }
]}

问题是可能有b个未知的子分区可以是1,也可以是任意数目。我创建了以下结构:

Blockdevices []struct {
    DiskName   string      `json:"disk_name"`
    Mountpoint interface{} `json:"mountpoint"`
    Size       string      `json:"size"`
    Fstype     string      `json:"fstype"`
    Partitions []struct {
        DiskName      string      `json:"disk_name"`
        Mountpoint    interface{} `json:"mountpoint"`
        Size          string      `json:"size"`
        Fstype        string      `json:"fstype"`
        SubPartitions bool        `json:"sub_partitions"`
        Partitions    []struct {
            DiskName   string `json:"disk_name"`
            Mountpoint string `json:"mountpoint"`
            Size       string `json:"size"`
            Fstype     string `json:"fstype"`
            Partitions []struct {
                DiskName   string `json:"disk_name"`
                Mountpoint string `json:"mountpoint"`
                Size       string `json:"size"`
                Fstype     string `json:"fstype"`
            } `json:"partitions,omitempty"`
        } `json:"partitions,omitempty"`
    } `json:"partitions,omitempty"`
} `json:"blockdevices"`}

它的工作很好,最多两个子分区,但我想要一个解决方案,可以工作到无论我们有多少个子分区。有什么办法吗。磁盘结构中的分区结构是一样的,我们能不能想写一次,但它作为循环工作?

谢谢是提前!