Example #1
0
        public static MemoryStream SaveToJson <T>(T obj) where T : ModelObject
        {
            var ms = new MemoryStream();

            using (var writer = new Utf8JsonWriter(ms))
                SerializationMap <T> .SerializeToJson(obj, writer);
            ms.Position = 0;
            return(ms);
        }
Example #2
0
        public override void SerializeToJson(TOwner owner, Utf8JsonWriter writer)
        {
            var list = getter(owner);

            writer.WriteStartArray();
            foreach (var elem in list)
            {
                SerializationMap <TElement> .SerializeToJson(elem, writer);
            }
            writer.WriteEndArray();
        }
Example #3
0
        public static T LoadFromJson <T>(ReadOnlySpan <byte> buffer, ModelObject owner, ErrorCollector collector) where T : ModelObject
        {
            var reader = new Utf8JsonReader(buffer);

            reader.Read();
            var context = new DeserializationContext(collector);
            var result  = SerializationMap <T> .DeserializeFromJson(owner, ref reader, context);

            context.Notify();
            return(result);
        }
Example #4
0
        public override void DeserializeFromJson(TOwner owner, ref Utf8JsonReader reader, DeserializationContext context)
        {
            if (reader.TokenType == JsonTokenType.Null)
            {
                return;
            }
            var instance = getter(owner);

            if (instance == null)
            {
                setter(owner, SerializationMap <TPropertyType> .DeserializeFromJson(owner, ref reader, context));
                return;
            }
            base.DeserializeFromJson(owner, ref reader, context);
        }
Example #5
0
        public static T LoadFromJson <T>(byte[] buffer, ModelObject owner, ErrorCollector collector, int bufferLength = -1) where T : ModelObject
        {
            if (bufferLength == -1)
            {
                bufferLength = buffer.Length;
            }
            var reader = new Utf8JsonReader(new ReadOnlySequence <byte>(buffer, 0, bufferLength));

            reader.Read();
            var context = new DeserializationContext(collector);
            var result  = SerializationMap <T> .DeserializeFromJson(owner, ref reader, context);

            context.Notify();
            return(result);
        }
Example #6
0
        public override void SerializeToJson(TOwner owner, Utf8JsonWriter writer)
        {
            var instance = getter(owner);

            if (instance == null)
            {
                writer.WriteNullValue();
            }
            else if (instance.GetType() == typeof(TPropertyType))
            {
                SerializationMap <TPropertyType> .SerializeToJson(instance, writer);
            }
            else
            {
                SerializationMap.GetSerializationMap(instance.GetType()).SerializeToJson(instance, writer);
            }
        }
Example #7
0
        public override void DeserializeFromJson(TOwner owner, ref Utf8JsonReader reader, DeserializationContext context)
        {
            if (reader.TokenType == JsonTokenType.Null)
            {
                return;
            }
            var instance = getter(owner);

            if (instance.GetType() == typeof(TPropertyType))
            {
                SerializationMap <TPropertyType> .PopulateFromJson(getter(owner), ref reader, context);
            }
            else
            {
                SerializationMap.GetSerializationMap(instance.GetType()).PopulateFromJson(instance, ref reader, context);
            }
        }
Example #8
0
        public override void DeserializeFromJson(TOwner owner, ref Utf8JsonReader reader, DeserializationContext context)
        {
            var list = getter(owner);

            list.Clear();
            if (reader.ReadStartArray())
            {
                while (reader.TokenType != JsonTokenType.EndArray)
                {
                    var elem = SerializationMap <TElement> .DeserializeFromJson(owner, ref reader, context);

                    if (elem != null)
                    {
                        list.Add(elem);
                    }
                    reader.Read();
                }
            }
        }
Example #9
0
 public override void PopulateFromJson(object target, ref Utf8JsonReader reader, DeserializationContext context)
 {
     SerializationMap <T> .PopulateFromJson(target as T, ref reader, context);
 }
Example #10
0
 public override void SerializeToJson(object target, Utf8JsonWriter writer)
 {
     SerializationMap <T> .SerializeToJson(target as T, writer);
 }
Example #11
0
 public override void WriteToJson(Utf8JsonWriter writer, T value) => SerializationMap <T> .SerializeToJson(value, writer);
Example #12
0
 public override T ReadFromJson(ref Utf8JsonReader reader, DeserializationContext context) => SerializationMap <T> .DeserializeFromJson(null, ref reader, context);