diff --git a/app/Umbraco/Umbraco.Archetype/Models/Archetype.cs b/app/Umbraco/Umbraco.Archetype/Models/Archetype.cs index 207e9f6..4df3c7a 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/Archetype.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/Archetype.cs @@ -1,6 +1,9 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace Archetype.Umbraco.Models { @@ -24,5 +27,18 @@ namespace Archetype.Umbraco.Models { return this.GetEnumerator(); } + + internal string SerializeForPersistence() + { + var json = JObject.Parse(JsonConvert.SerializeObject(this)); + var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid" }; + + json.Descendants().OfType() + .Where(p => propertiesToRemove.Contains(p.Name)) + .ToList() + .ForEach(x => x.Remove()); + + return json.ToString(); + } } } diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 81414dc..e55ed1d 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -72,15 +72,7 @@ namespace Archetype.Umbraco.PropertyEditors } } - var json = JObject.Parse(JsonConvert.SerializeObject(archetype)); - var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid" }; - - json.Descendants().OfType() - .Where(p => propertiesToRemove.Contains(p.Name)) - .ToList() - .ForEach(x => x.Remove()); - - return json.ToString(); + return archetype.SerializeForPersistence(); } public override object ConvertDbToEditor(Property property, PropertyType propertyType, IDataTypeService dataTypeService) @@ -88,7 +80,7 @@ namespace Archetype.Umbraco.PropertyEditors if (property.Value == null || property.Value.ToString() == "") return string.Empty; - var archetype = JsonConvert.DeserializeObject(property.Value.ToString(), _jsonSettings); + var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); foreach (var fieldset in archetype.Fieldsets) { @@ -123,7 +115,7 @@ namespace Archetype.Umbraco.PropertyEditors } } - return JsonConvert.SerializeObject(archetype); + return archetype.SerializeForPersistence(); } }