diff --git a/MLEM.Data/Json/JsonExtensions.cs b/MLEM.Data/Json/JsonExtensions.cs
new file mode 100644
index 0000000..c02f975
--- /dev/null
+++ b/MLEM.Data/Json/JsonExtensions.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Reflection;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+
+namespace MLEM.Data.Json {
+ ///
+ /// A set of extensions for dealing with the Newtonsoft.JSON .
+ ///
+ public static class JsonExtensions {
+
+ ///
+ /// Changes the to a contract resolver that queries each newly created and allows modifying it easily.
+ /// This removes the need to create a new contract resolver class for modifying created json properties.
+ ///
+ /// The serializer to which to add the property modifier
+ /// A function that takes in the json property and allows returning a modified property (or the same one)
+ ///
+ public static JsonSerializer SetPropertyModifier(this JsonSerializer serializer, Func propertyModifier) {
+ serializer.ContractResolver = new PropertyModifierResolver(propertyModifier);
+ return serializer;
+ }
+
+ private class PropertyModifierResolver : DefaultContractResolver {
+
+ private readonly Func propertyModifier;
+
+ public PropertyModifierResolver(Func propertyModifier) {
+ this.propertyModifier = propertyModifier;
+ }
+
+ protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) {
+ var property = base.CreateProperty(member, memberSerialization);
+ return this.propertyModifier(property);
+ }
+
+ }
+
+ }
+}
\ No newline at end of file