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