///// <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); }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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)); }
///// <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);
/// <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); }