public static string ToNson(object obj, NsonSettings settings) { NsonEncoder encoder = new NsonEncoder(settings); encoder.EncodeValue(obj); return(encoder.NsonString()); }
/// <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); } } } }
/// <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())); } }
/// <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)); }
/// <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)); }
/// <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())); }
public NsonEncoder(NsonSettings settings) { _settings = settings; indent = 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)); }
NsonDecoder(string nsonString, NsonSettings settings = null) { _nson = new StringReader(nsonString); _settings = settings; }
/// <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)); }
/// <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)); } }