///// <summary>
        ///// Gets property value
        ///// </summary>
        //public JsonGetValue<TProperty, TObject> JsonGetValue { get; set; }
        ///// <summary>
        ///// Sets property value
        ///// </summary>
        //public Action<JsonDeserializer, TObject, TProperty> JsonSetValue { get; set; }
        //internal override object InternalGetValue(ref TObject instance)
        //{
        //    return GetValue(instance);
        //}

        //internal override void JsonSerialize(ref JsonSerializeHandler handler, ref object value)
        //{
        //    var unboxedValue = (TPropertyType)value;
        //    TypeGoInfo.JsonSerialize(ref handler, ref unboxedValue);
        //}


        internal override void TypedJsonSerialize(ref JsonSerializeHandler handler, ref TObject value)
        {
            TPropertyType propertyValue = GetValue(ref value);
            if (propertyValue == null || propertyValue.Equals(DefaultValue))
                return;
            handler.TextWriter.Write(NameSerialized);
            TypeGoInfo.JsonSerialize(ref handler, ref propertyValue);
            handler.TextWriter.Write(JsonConstantsString.Comma);
        }
Exemple #2
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref uint?value)
 {
     if (value.HasValue)
     {
         handler.TextWriter.Write(value.Value.ToString(CurrentCulture));
     }
     else
     {
         handler.TextWriter.Write(JsonConstantsString.Null);
     }
 }
Exemple #3
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref bool value)
 {
     if (value)
     {
         handler.TextWriter.Write(JsonConstantsString.True);
     }
     else
     {
         handler.TextWriter.Write(JsonConstantsString.False);
     }
 }
Exemple #4
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref TEnum?value)
 {
     if (value.HasValue)
     {
         var data = value.Value;
         handler.TextWriter.Write(Unsafe.As <TEnum, short>(ref data).ToString(CurrentCulture));
     }
     else
     {
         handler.TextWriter.Write(JsonConstantsString.Null);
     }
 }
Exemple #5
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref Guid?value)
 {
     if (value.HasValue)
     {
         handler.TextWriter.Write(JsonConstantsString.Quotes);
         handler.TextWriter.Write(value.ToString());
         handler.TextWriter.Write(JsonConstantsString.Quotes);
     }
     else
     {
         handler.TextWriter.Write(JsonConstantsString.Null);
     }
 }
Exemple #6
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref DateTime?value)
 {
     if (value.HasValue)
     {
         handler.TextWriter.Write(JsonConstantsString.Quotes);
         handler.TextWriter.Write(value.Value.ToString(Format, CurrentCulture));
         handler.TextWriter.Write(JsonConstantsString.Quotes);
     }
     else
     {
         handler.TextWriter.Write(JsonConstantsString.Null);
     }
 }
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref TObject value)
 {
     handler.TextWriter.Write(JsonConstantsString.OpenBraket);
     for (int i = 0; i < Properties.Length; i++)
     {
         var property = Properties[i];
         property.TypedJsonSerialize(ref handler, ref value);
         //object propertyValue = property.InternalGetValue(ref value);
         //if (propertyValue == null || propertyValue.Equals(property.DefaultValue))
         //    continue;
         //handler.TextWriter.Write(property.NameSerialized);
         //property.JsonSerialize(ref handler, ref propertyValue);
         //handler.TextWriter.Write(JsonConstantsString.Comma);
     }
     handler.TextWriter.RemoveLast(JsonConstantsString.Comma);
     handler.TextWriter.Write(JsonConstantsString.CloseBracket);
 }
        /// <summary>
        /// json serialize
        /// </summary>
        /// <param name="handler"></param>
        /// <param name="value"></param>
        public void JsonSerialize(ref JsonSerializeHandler handler, ref List <T> value)
        {
            if (value != null)
            {
                handler.TextWriter.Write(JsonConstantsString.OpenSquareBrackets);
                int count = value.Count;
                for (int i = 0; i < count; i++)
                {
                    var obj = value[i];
                    typeGoInfo.JsonSerialize(ref handler, ref obj);
                    handler.TextWriter.Write(JsonConstantsString.Comma);
                }

                handler.TextWriter.RemoveLast(JsonConstantsString.Comma);
                handler.TextWriter.Write(JsonConstantsString.CloseSquareBrackets);
            }
            else
            {
                handler.TextWriter.Write(JsonConstantsString.Null);
            }
        }
Exemple #9
0
        /// <summary>
        /// json serialize
        /// </summary>
        /// <param name="handler"></param>
        /// <param name="value"></param>
        public void JsonSerialize(ref JsonSerializeHandler handler, ref string value)
        {
            handler.TextWriter.Write(JsonConstantsString.Quotes);
            ReadOnlySpan <char> result = value.AsSpan();
            int len = result.Length;

            //int hasBackSlashNIndex = -1;
            for (int i = 0; i < len; i++)
            {
                if (result[i] == JsonConstantsString.Quotes)
                {
                    handler.TextWriter.Write(JsonConstantsString.BackSlashQuotes);
                }
                else if (result[i] == JsonConstantsString.BackSlash)
                {
                    handler.TextWriter.Write(JsonConstantsString.DoubleBackSlash);
                }
                else if (result[i] == JsonConstantsString.NSpace)
                {
                    //if (hasBackSlashNIndex != i - 1 && IsUnixNewLine)
                    //    handler.TextWriter.Write(JsonConstantsString.BackSlashRN);
                    //else
                    handler.TextWriter.Write(JsonConstantsString.BackSlashN);
                }
                else if (result[i] == JsonConstantsString.RSpace)
                {
                    //hasBackSlashNIndex = i;
                    handler.TextWriter.Write(JsonConstantsString.BackSlashR);
                }
                else if (result[i] == JsonConstantsString.TSpace)
                {
                    handler.TextWriter.Write(JsonConstantsString.BackSlashT);
                }
                else
                {
                    handler.TextWriter.Write(result[i]);
                }
            }
            handler.TextWriter.Write(JsonConstantsString.Quotes);
        }
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref TEnum value)
 {
     handler.TextWriter.Write(Unsafe.As <TEnum, ushort>(ref value).ToString(CurrentCulture));
 }
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref Guid value)
 {
     handler.TextWriter.Write(JsonConstantsString.Quotes);
     handler.TextWriter.Write(value.ToString());
     handler.TextWriter.Write(JsonConstantsString.Quotes);
 }
Exemple #12
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref TEnum value)
 {
     handler.TextWriter.Write(((sbyte)(object)value).ToString(CurrentCulture));
 }
Exemple #13
0
 ///// <summary>
 ///// Gets property value
 ///// </summary>
 //internal abstract object InternalGetValue(ref TObject instance);
 ///// <summary>
 ///// Set value of property
 ///// </summary>
 //internal abstract void InternalSetValue(ref TObject instance, ref object value);
 ///// <summary>
 ///// json serialize
 ///// </summary>
 ///// <param name="handler"></param>
 ///// <param name="value"></param>
 //internal abstract void JsonSerialize(ref JsonSerializeHandler handler, ref object value);
 /// <summary>
 /// type safe json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 internal abstract void TypedJsonSerialize(ref JsonSerializeHandler handler, ref TObject value);
Exemple #14
0
 /// <summary>
 /// json serialize
 /// </summary>
 /// <param name="handler"></param>
 /// <param name="value"></param>
 public void JsonSerialize(ref JsonSerializeHandler handler, ref byte[] value)
 {
     handler.TextWriter.Write(JsonConstantsString.Quotes);
     handler.TextWriter.Write(Convert.ToBase64String(value));
     handler.TextWriter.Write(JsonConstantsString.Quotes);
 }