public static string ToString(object value)
        {
            if (value == null)
            {
                return(JsonConvert.Null);
            }
            switch (ConvertUtils.GetTypeCode(value))
            {
            case PrimitiveTypeCode.Char:
                return(JsonConvert.ToString((char)value));

            case PrimitiveTypeCode.Boolean:
                return(JsonConvert.ToString((bool)value));

            case PrimitiveTypeCode.SByte:
                return(JsonConvert.ToString((sbyte)value));

            case PrimitiveTypeCode.Int16:
                return(JsonConvert.ToString((short)value));

            case PrimitiveTypeCode.UInt16:
                return(JsonConvert.ToString((ushort)value));

            case PrimitiveTypeCode.Int32:
                return(JsonConvert.ToString((int)value));

            case PrimitiveTypeCode.Byte:
                return(JsonConvert.ToString((byte)value));

            case PrimitiveTypeCode.UInt32:
                return(JsonConvert.ToString((uint)value));

            case PrimitiveTypeCode.Int64:
                return(JsonConvert.ToString((long)value));

            case PrimitiveTypeCode.UInt64:
                return(JsonConvert.ToString((ulong)value));

            case PrimitiveTypeCode.Single:
                return(JsonConvert.ToString((float)value));

            case PrimitiveTypeCode.Double:
                return(JsonConvert.ToString((double)value));

            case PrimitiveTypeCode.DateTime:
                return(JsonConvert.ToString((DateTime)value));

            case PrimitiveTypeCode.DateTimeOffset:
                return(JsonConvert.ToString((DateTimeOffset)value));

            case PrimitiveTypeCode.Decimal:
                return(JsonConvert.ToString((decimal)value));

            case PrimitiveTypeCode.Guid:
                return(JsonConvert.ToString((Guid)value));

            case PrimitiveTypeCode.TimeSpan:
                return(JsonConvert.ToString((TimeSpan)value));

            case PrimitiveTypeCode.BigInteger:
                return(JsonConvert.ToStringInternal((BigInteger)value));

            case PrimitiveTypeCode.Uri:
                return(JsonConvert.ToString((Uri)value));

            case PrimitiveTypeCode.String:
                return(JsonConvert.ToString((string)value));

            case PrimitiveTypeCode.DBNull:
                return(JsonConvert.Null);
            }
            throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
        }