Наследование: Aliyun.Acs.Core.AcsResponse
        public static DescribeZonesResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeZonesResponse describeZonesResponse = new DescribeZonesResponse();

            describeZonesResponse.HttpResponse = context.HttpResponse;
            describeZonesResponse.RequestId = context.StringValue("DescribeZones.RequestId");

            List<DescribeZonesResponse.Zone> zones = new List<DescribeZonesResponse.Zone>();
            for (int i = 0; i < context.Length("DescribeZones.Zones.Length"); i++) {
                DescribeZonesResponse.Zone zone = new DescribeZonesResponse.Zone();
                zone.ZoneId = context.StringValue("DescribeZones.Zones["+ i +"].ZoneId");
                zone.LocalName = context.StringValue("DescribeZones.Zones["+ i +"].LocalName");

                List<string> availableResourceCreation = new List<string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones["+ i +"].AvailableResourceCreation.Length"); j++) {
                    availableResourceCreation.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResourceCreation["+ j +"]"));
                }
                zone.AvailableResourceCreation = availableResourceCreation;

                List<string> availableDiskCategories = new List<string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones["+ i +"].AvailableDiskCategories.Length"); j++) {
                    availableDiskCategories.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableDiskCategories["+ j +"]"));
                }
                zone.AvailableDiskCategories = availableDiskCategories;

                List<string> availableInstanceTypes = new List<string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones["+ i +"].AvailableInstanceTypes.Length"); j++) {
                    availableInstanceTypes.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableInstanceTypes["+ j +"]"));
                }
                zone.AvailableInstanceTypes = availableInstanceTypes;

                List<DescribeZonesResponse.Zone.ResourcesInfo> availableResources = new List<DescribeZonesResponse.Zone.ResourcesInfo>();
                for (int j = 0; j < context.Length("DescribeZones.Zones["+ i +"].AvailableResources.Length"); j++) {
                    DescribeZonesResponse.Zone.ResourcesInfo resourcesInfo = new DescribeZonesResponse.Zone.ResourcesInfo();
                    resourcesInfo.IoOptimized = context.BooleanValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].IoOptimized");

                    List<string> systemDiskCategories = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].SystemDiskCategories.Length"); k++) {
                        systemDiskCategories.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].SystemDiskCategories["+ k +"]"));
                    }
                    resourcesInfo.SystemDiskCategories = systemDiskCategories;

                    List<string> dataDiskCategories = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].DataDiskCategories.Length"); k++) {
                        dataDiskCategories.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].DataDiskCategories["+ k +"]"));
                    }
                    resourcesInfo.DataDiskCategories = dataDiskCategories;

                    List<string> networkTypes = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].NetworkTypes.Length"); k++) {
                        networkTypes.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].NetworkTypes["+ k +"]"));
                    }
                    resourcesInfo.NetworkTypes = networkTypes;

                    List<string> instanceTypes = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceTypes.Length"); k++) {
                        instanceTypes.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceTypes["+ k +"]"));
                    }
                    resourcesInfo.InstanceTypes = instanceTypes;

                    List<string> instanceTypeFamilies = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceTypeFamilies.Length"); k++) {
                        instanceTypeFamilies.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceTypeFamilies["+ k +"]"));
                    }
                    resourcesInfo.InstanceTypeFamilies = instanceTypeFamilies;

                    List<string> instanceGenerations = new List<string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceGenerations.Length"); k++) {
                        instanceGenerations.Add(context.StringValue("DescribeZones.Zones["+ i +"].AvailableResources["+ j +"].InstanceGenerations["+ k +"]"));
                    }
                    resourcesInfo.InstanceGenerations = instanceGenerations;

                    availableResources.Add(resourcesInfo);
                }
                zone.AvailableResources = availableResources;

                zones.Add(zone);
            }
            describeZonesResponse.Zones = zones;

            return describeZonesResponse;
        }