diff --git a/addressfield/fields.py b/addressfield/fields.py
index 32c0c725bf7f41eaae170749de44c675a94f3fd2..7692b9eb466616fc1bf94e1ee1ee077f6f4b8f1e 100644
--- a/addressfield/fields.py
+++ b/addressfield/fields.py
@@ -49,4 +49,13 @@ class AddressField(forms.CharField):
             missing_field_name = [fields[field]['label'] for field in missing_fields]
             raise ValidationError('Please provide data for: {}'.format(', '.join(missing_field_name)))
 
-        super().clean(value, **kwargs)
+        return super().clean(value, **kwargs)
+
+    def to_python(self, value):
+        return json.dumps(value)
+
+    def prepare_value(self, value):
+        try:
+            return json.loads(value)
+        except TypeError:
+            return value