Example #1
0
 /// <summary>
 /// The decode.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <returns>The value.</returns>
 public double Decode(IJsonReader reader)
 {
     return(reader.ReadDouble());
 }
        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);
        }