public override object Deserialize(IJsonReader reader) { if (reader.RawValue is MessagePackTimestamp) { return((MessagePackTimestamp)reader.Value.Raw); } else if (reader.Token == JsonToken.Null) { return(null); } reader.ReadObjectBegin(); var seconds = default(long); var nanoSeconds = default(uint); while (reader.Token != JsonToken.EndOfObject) { var member = reader.ReadMember(); switch (member) { case SECONDS_MEMBER_NAME: seconds = reader.ReadInt64(); break; case NANO_SECONDS_MEMBER_NAME: seconds = reader.ReadUInt32(); break; default: reader.ReadValue(typeof(object)); // skip value break; } } reader.ReadObjectEnd(false); var value = new MessagePackTimestamp(seconds, nanoSeconds); return(value); }
/// <summary> /// The decode. /// </summary> /// <param name="reader">The reader.</param> /// <returns>The value.</returns> public long Decode(IJsonReader reader) { return(reader.ReadInt64()); }
public override object Deserialize(IJsonReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } if (reader.Token == JsonToken.Null) { if (this.primitiveTypeCode == TypeCode.String) { return(null); } throw new UnexpectedToken(reader, JsonToken.Boolean, JsonToken.DateTime, JsonToken.Null, JsonToken.Number, JsonToken.StringLiteral); } var value = default(object); switch (primitiveTypeCode) { case TypeCode.Boolean: value = reader.ReadBoolean(false); break; case TypeCode.Byte: value = reader.ReadByte(false); break; case TypeCode.DateTime: value = reader.ReadDateTime(false); break; case TypeCode.Decimal: value = reader.ReadDecimal(false); break; case TypeCode.Double: value = reader.ReadDouble(false); break; case TypeCode.Int16: value = reader.ReadInt16(false); break; case TypeCode.Int32: value = reader.ReadInt32(false); break; case TypeCode.Int64: value = reader.ReadInt64(false); break; case TypeCode.SByte: value = reader.ReadSByte(false); break; case TypeCode.Single: value = reader.ReadSingle(false); break; case TypeCode.UInt16: value = reader.ReadUInt16(false); break; case TypeCode.UInt32: value = reader.ReadUInt32(false); break; case TypeCode.UInt64: value = reader.ReadUInt64(false); break; default: var valueStr = reader.ReadString(false); value = Convert.ChangeType(valueStr, this.primitiveType, reader.Context.Format); break; } return(value); }