예제 #1
0
        public JsonValue SerializeType <T>(JsonSerializer serializer)
        {
            var json         = new JsonObject();
            var type         = typeof(T);
            var propertyList = ReflectionCache.GetTypeMembers(type, serializer.Options.PropertySelectionStrategy, serializer.Options.AutoSerializeFields);
            var map          = _SerializeTypeValues(serializer, propertyList);

            _ConstructJsonObject(json, map, serializer.Options);
            return(json.Count == 0 ? JsonValue.Null : json);
        }
예제 #2
0
        public void DeserializeType <T>(JsonValue json, JsonSerializer serializer)
        {
            var type         = typeof(T);
            var propertyList = ReflectionCache.GetTypeMembers(type, serializer.Options.PropertySelectionStrategy, serializer.Options.AutoSerializeFields);
            var map          = _DeserializeTypeValues(json, serializer, propertyList, !serializer.Options.CaseSensitiveDeserialization);

            if ((json.Object.Count > 0) && (serializer.Options.InvalidPropertyKeyBehavior == InvalidPropertyKeyBehavior.ThrowException))
            {
                throw new TypeDoesNotContainPropertyException(type, json);
            }
            _AssignObjectProperties(null, map);
        }