/// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DescribeParameterGroupsResponse response = new DescribeParameterGroupsResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("NextToken", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.NextToken = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("ParameterGroups", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <ParameterGroup, ParameterGroupUnmarshaller>(ParameterGroupUnmarshaller.Instance);
                    response.ParameterGroups = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        public static DescribeParameterGroupsResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeParameterGroupsResponse describeParameterGroupsResponse = new DescribeParameterGroupsResponse();

            describeParameterGroupsResponse.HttpResponse            = _ctx.HttpResponse;
            describeParameterGroupsResponse.RequestId               = _ctx.StringValue("DescribeParameterGroups.RequestId");
            describeParameterGroupsResponse.SignalForOptimizeParams = _ctx.BooleanValue("DescribeParameterGroups.SignalForOptimizeParams");

            List <DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroup> describeParameterGroupsResponse_parameterGroups = new List <DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroup>();

            for (int i = 0; i < _ctx.Length("DescribeParameterGroups.ParameterGroups.Length"); i++)
            {
                DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroup parameterGroup = new DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroup();
                parameterGroup.ParameterGroupType = _ctx.IntegerValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupType");
                parameterGroup.ParameterGroupName = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupName");
                parameterGroup.ParamCounts        = _ctx.IntegerValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParamCounts");
                parameterGroup.ParameterGroupDesc = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupDesc");
                parameterGroup.ForceRestart       = _ctx.IntegerValue("DescribeParameterGroups.ParameterGroups[" + i + "].ForceRestart");
                parameterGroup.Engine             = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].Engine");
                parameterGroup.EngineVersion      = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].EngineVersion");
                parameterGroup.CreateTime         = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].CreateTime");
                parameterGroup.UpdateTime         = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].UpdateTime");
                parameterGroup.ParameterGroupId   = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupId");

                describeParameterGroupsResponse_parameterGroups.Add(parameterGroup);
            }
            describeParameterGroupsResponse.ParameterGroups = describeParameterGroupsResponse_parameterGroups;

            return(describeParameterGroupsResponse);
        }
        public static DescribeParameterGroupsResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeParameterGroupsResponse describeParameterGroupsResponse = new DescribeParameterGroupsResponse();

            describeParameterGroupsResponse.HttpResponse = _ctx.HttpResponse;
            describeParameterGroupsResponse.RequestId    = _ctx.StringValue("DescribeParameterGroups.RequestId");

            List <DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroupsItem> describeParameterGroupsResponse_parameterGroups = new List <DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroupsItem>();

            for (int i = 0; i < _ctx.Length("DescribeParameterGroups.ParameterGroups.Length"); i++)
            {
                DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroupsItem parameterGroupsItem = new DescribeParameterGroupsResponse.DescribeParameterGroups_ParameterGroupsItem();
                parameterGroupsItem.DBVersion          = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].DBVersion");
                parameterGroupsItem.ParameterGroupId   = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupId");
                parameterGroupsItem.ForceRestart       = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ForceRestart");
                parameterGroupsItem.ParameterGroupName = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupName");
                parameterGroupsItem.CreateTime         = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].CreateTime");
                parameterGroupsItem.ParameterGroupDesc = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupDesc");
                parameterGroupsItem.ParameterGroupType = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterGroupType");
                parameterGroupsItem.ParameterCounts    = _ctx.LongValue("DescribeParameterGroups.ParameterGroups[" + i + "].ParameterCounts");
                parameterGroupsItem.DBType             = _ctx.StringValue("DescribeParameterGroups.ParameterGroups[" + i + "].DBType");

                describeParameterGroupsResponse_parameterGroups.Add(parameterGroupsItem);
            }
            describeParameterGroupsResponse.ParameterGroups = describeParameterGroupsResponse_parameterGroups;

            return(describeParameterGroupsResponse);
        }