///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     Serializes the given value.
        /// </summary>
        ///
        /// <remarks>
        ///     Anwar Javed, 09/24/2013 9:37 AM.
        /// </remarks>
        ///
        /// <exception cref="SerializationException">
        ///     Thrown when a Serialization error condition occurs.
        /// </exception>
        ///
        /// <param name="value">
        ///     The value.
        /// </param>
        /// <param name="mode">
        ///     (optional) the mode.
        /// </param>
        /// <param name="nullValue">
        ///     (optional) the null value.
        /// </param>
        ///
        /// <returns>
        ///     .
        /// </returns>
        ///-------------------------------------------------------------------------------------------------
        public string Serialize(object value, SerializationMode mode = SerializationMode.None, ValueHandlingMode nullValue = ValueHandlingMode.Ignore)
        {
            try
            {
                JsonSerializerSettings settings = new JsonSerializerSettings()
                {
                    Formatting            = Formatting.Indented,
                    NullValueHandling     = NullValueHandling.Ignore,
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                };

                settings.Converters.Add(new GuidConverter());
                settings.Converters.Add(new StringEnumConverter());

                switch (mode)
                {
                case SerializationMode.Compact:
                    settings.Formatting = Formatting.None;
                    break;
                }

                switch (nullValue)
                {
                case ValueHandlingMode.Include:
                    settings.NullValueHandling = NullValueHandling.Include;
                    break;
                }

                return(JsonConvert.SerializeObject(value, settings));
            }
            catch (Exception exception)
            {
                throw new SerializationException(exception.Message, exception);
            }
        }
 ///-------------------------------------------------------------------------------------------------
 /// <summary>
 ///     Serializes the given value.
 /// </summary>
 ///
 /// <remarks>
 ///     Anwar Javed, 09/24/2013 9:38 AM.
 /// </remarks>
 ///
 /// <typeparam name="T">
 ///     Generic type parameter.
 /// </typeparam>
 /// <param name="value">
 ///     The value.
 /// </param>
 /// <param name="mode">
 ///     (optional) the mode.
 /// </param>
 /// <param name="nullValue">
 ///     (optional) the null value.
 /// </param>
 ///
 /// <returns>
 ///     .
 /// </returns>
 ///-------------------------------------------------------------------------------------------------
 public string Serialize <T>(T value, SerializationMode mode = SerializationMode.None, ValueHandlingMode nullValue = ValueHandlingMode.Ignore)
 {
     return(this.Serialize((object)value, mode, nullValue));
 }
Exemple #3
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     Serializes the given value.
        /// </summary>
        ///
        /// <remarks>
        ///     Anwar Javed, 09/24/2013 9:38 AM.
        /// </remarks>
        ///
        /// <param name="value">
        ///     The value.
        /// </param>
        /// <param name="mode">
        ///     (optional) the mode.
        /// </param>
        /// <param name="nullValue">
        ///     (optional) the null value.
        /// </param>
        ///
        /// <returns>
        ///     .
        /// </returns>
        ///-------------------------------------------------------------------------------------------------
        public string Serialize(object value, SerializationMode mode = SerializationMode.None, ValueHandlingMode nullValue = ValueHandlingMode.Ignore)
        {
            if (value != null)
            {
                var saveOptions = SaveOptions.OmitDuplicateNamespaces;

                switch (mode)
                {
                case SerializationMode.Compact:
                    saveOptions |= SaveOptions.DisableFormatting;
                    break;
                }

                XDocument document = new XDocument();
                document.Declaration = new XDeclaration("1.0", "utf-8", null);

                document.AddFirst(BuildRoot(value));
                StringBuilder builder = new StringBuilder();
                using (TextWriter writer = new Framework.IO.StringWriter(Encoding.UTF8, builder))
                {
                    document.Save(writer, saveOptions);
                }

                return(builder.ToString());
            }

            return(string.Empty);
        }