/// <summary>
        /// Convert an object to a JSON string with the specified formatting
        /// </summary>
        /// <param name="obj">The obj.</param>
        /// <param name="propertyNamesCaseType">Type of the property names case.</param>
        /// <returns></returns>
        public static string ToJsonString(this object obj, PropertyNamesCaseType propertyNamesCaseType)
        {
            var type          = obj.GetType();
            var dateTimeStyle = "yyyy-MM-dd HH:mm:ss";

            if (type.IsPrimitive || typeof(string).IsAssignableFrom(type))
            {
                return(obj.ToString());
            }

            if (typeof(DateTime).IsAssignableFrom(type) || typeof(DateTimeOffset).IsAssignableFrom(type))
            {
                return(Convert.ToDateTime(obj).ToString(dateTimeStyle));
            }

            var serializer = new JsonSerializer();

            switch (propertyNamesCaseType)
            {
            case PropertyNamesCaseType.CamelCase:
                serializer.ContractResolver = new CamelCasePropertyNamesContractResolver();
                break;
            }

            var dateTimeConverter = new IsoDateTimeConverter
            {
                DateTimeStyles = System.Globalization.DateTimeStyles.None,
                DateTimeFormat = dateTimeStyle
            };

            if (typeof(IDictionary).IsAssignableFrom(type))
            {
                return(JObject.FromObject(obj, serializer).ToString(Formatting.None, dateTimeConverter));
            }

            if (type.IsArray || (typeof(IEnumerable).IsAssignableFrom(type)))
            {
                return(JArray.FromObject(obj, serializer).ToString(Formatting.None, dateTimeConverter));
            }

            return(JObject.FromObject(obj, serializer).ToString(Formatting.None, dateTimeConverter));
        }
 /// <summary>
 /// Convert an object to a JSON string with the specified formatting
 /// </summary>
 /// <param name="html"></param>
 /// <param name="obj"></param>
 /// <returns></returns>
 public static IHtmlString ToJsonString(this HtmlHelper html, object obj, PropertyNamesCaseType propertyNamesCaseType)
 {
     return(new HtmlString(obj.ToJsonString(propertyNamesCaseType)));
 }