private void WriteStructure(JsonWriter writer, Shape structure)
{
var pushed = this._tcr.Push(structure.Name);
if (!pushed)
return;
if (structure.PayloadMemberName != null)
{
this.WriteStructure(writer, structure.PayloadMember.Shape);
return;
}
writer.WriteObjectStart();
foreach (var member in structure.Members)
{
writer.WritePropertyName(member.MarshallName);
if (member.OverrideDataType != null && string.Equals(member.OverrideDataType.Unmarshaller, "DateTimeEpochLongMillisecondsUnmarshaller"))
{
var ticks = Constants.DEFAULT_DATE.Ticks - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
writer.Write((long)TimeSpan.FromTicks(ticks).TotalMilliseconds);
}
else if (member.OverrideDataType != null && string.Equals(member.OverrideDataType.Unmarshaller, "Amazon.Runtime.Internal.Transform.DateTimeUnmarshaller"))
{
writer.Write(Constants.DEFAULT_DATE.ToString(AWSSDKUtils.ISO8601DateFormat, CultureInfo.InvariantCulture));
}
else if (member.OverrideDataType != null && string.Equals(member.OverrideDataType.Unmarshaller, "Amazon.Runtime.Internal.Transform.DecimalUnmarshaller"))
{
writer.Write(Constants.DEFAULT_DECIMAL.ToString(CultureInfo.InvariantCulture));
}
else
{
this.Write(writer, member.Shape);
}
}
writer.WriteObjectEnd();
if (pushed)
this._tcr.Pop();
}