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())); }