Ejemplo n.º 1
0
        public static string ToNson(object obj, NsonSettings settings)
        {
            NsonEncoder encoder = new NsonEncoder(settings);

            encoder.EncodeValue(obj);
            return(encoder.NsonString());
        }
Ejemplo n.º 2
0
 /// <summary>
 /// overwrites the data on <paramref name="obj"/> with the data serialized from JSON. This will only
 /// work for custom objects, Dictionarys and Lists.
 /// </summary>
 /// <param name="nsonString">Nson string.</param>
 /// <param name="obj">Object.</param>
 /// <param name="settings">Settings.</param>
 public static void FromNsonOverwrite(string nsonString, object obj, NsonSettings settings = null)
 {
     using (var instance = new NsonDecoder(nsonString, settings))
     {
         var type = obj.GetType();
         if (obj is IDictionary)
         {
             instance.DecodeDictionary(type, obj);
         }
         else if (obj is ICollection)
         {
             instance.DecodeList(type, obj);
         }
         else
         {
             try
             {
                 instance.DecodeObject(type, obj);
             }
             catch (Exception e)
             {
                 throw new DecodeException($"{nameof(FromNsonOverwrite)} only support Dictionary, List and custom objects. Use {nameof(FromNson)} for other types", e);
             }
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// decodes <paramref name="nsonString"/> into standard system and generic types
 /// </summary>
 /// <returns>The nson.</returns>
 /// <param name="nsonString">Nson string.</param>
 /// <param name="settings">Settings.</param>
 public static object FromNson(string nsonString, NsonSettings settings = null)
 {
     using (var instance = new NsonDecoder(nsonString, settings))
     {
         return(instance.DecodeValueUntyped(instance.GetNextToken()));
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// encodes <paramref name="obj"/> to a nson string with an optional <see cref="NsonTypeConverter"/>
        /// </summary>
        /// <returns>The nson.</returns>
        /// <param name="obj">Object.</param>
        /// <param name="converters">Converters.</param>
        public static string ToNson(object obj, params NsonTypeConverter[] converters)
        {
            NsonSettings settings = new NsonSettings {
                TypeConverters = converters
            };

            return(ToNson(obj, settings));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// encodes <paramref name="obj"/> to a nson string, pretty printed
        /// </summary>
        /// <returns>The nson.</returns>
        /// <param name="obj">Object.</param>
        /// <param name="prettyPrint">If set to <c>true</c> pretty print.</param>
        public static string ToNson(object obj, bool prettyPrint)
        {
            NsonSettings settings = new NsonSettings {
                PrettyPrint = prettyPrint
            };

            return(ToNson(obj, settings));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// encodes <paramref name="obj"/> to a nson string
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static string ToNson(object obj, NsonSettings options = null)
        {
            // Invoke methods tagged with [BeforeEncode] attribute.
            if (obj != null)
            {
                Type type = obj.GetType();
                if (!(type.IsEnum || type.IsPrimitive || type.IsArray))
                {
                    foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
                    {
                        if (method.IsDefined(NsonConstants.beforeEncodeAttrType) && method.GetParameters().Length == 0)
                        {
                            method.Invoke(obj, null);
                        }
                    }
                }
            }

            return(NsonEncoder.ToNson(obj, options ?? new NsonSettings()));
        }
Ejemplo n.º 7
0
 public NsonEncoder(NsonSettings settings)
 {
     _settings = settings;
     indent    = 0;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// decodes <paramref name="nsonString"/> into an object of type T
 /// </summary>
 /// <returns>The nson.</returns>
 /// <param name="nsonString">Nson string.</param>
 /// <param name="settings">Settings.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static T FromNson <T>(string nsonString, NsonSettings settings = null)
 {
     return((T)FromNson(nsonString, typeof(T), settings));
 }
Ejemplo n.º 9
0
 NsonDecoder(string nsonString, NsonSettings settings = null)
 {
     _nson     = new StringReader(nsonString);
     _settings = settings;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// decods <paramref name="nson"/> into a strongly typed object
 /// </summary>
 /// <param name="nson"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static T FromNson <T>(string nson, NsonSettings settings = null)
 {
     System.Diagnostics.Debug.Assert(nson != null);
     return(NsonDecoder.FromNson <T>(nson, settings));
 }
Ejemplo n.º 11
0
 /// <summary>
 /// decodes <paramref name="nsonString"/> into an object of type <paramref name="type"/>
 /// </summary>
 /// <returns>The nson.</returns>
 /// <param name="nsonString">Nson string.</param>
 /// <param name="type">Type.</param>
 /// <param name="settings">Settings.</param>
 public static object FromNson(string nsonString, Type type, NsonSettings settings = null)
 {
     using (NsonDecoder instance = new NsonDecoder(nsonString, settings)) {
         return(instance.DecodeValue(instance.GetNextToken(), type));
     }
 }