diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-01-14 13:03:57 -0500 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-01-14 13:03:57 -0500 |
commit | 9d1b6a1af2f21dff9904d03daaf6f1ce6409d7f8 (patch) | |
tree | 2e0c03e84f65382ae5c0b906ff40e3299b382981 /src | |
parent | 83bdcd28386cebd36890565065912be4e3443603 (diff) | |
download | SMAPI-9d1b6a1af2f21dff9904d03daaf6f1ce6409d7f8.tar.gz SMAPI-9d1b6a1af2f21dff9904d03daaf6f1ce6409d7f8.tar.bz2 SMAPI-9d1b6a1af2f21dff9904d03daaf6f1ce6409d7f8.zip |
fix issue where default ICollection<T> values in config.json were duplicated on each load (#209)
Diffstat (limited to 'src')
-rw-r--r-- | src/StardewModdingAPI/Manifest.cs | 1 | ||||
-rw-r--r-- | src/StardewModdingAPI/ModHelper.cs | 15 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/StardewModdingAPI/Manifest.cs b/src/StardewModdingAPI/Manifest.cs index 018b31ae..07dd3541 100644 --- a/src/StardewModdingAPI/Manifest.cs +++ b/src/StardewModdingAPI/Manifest.cs @@ -8,6 +8,7 @@ namespace StardewModdingAPI internal class ManifestImpl : Manifest, IManifest { /// <summary>The mod version.</summary> + [JsonProperty("Version", ObjectCreationHandling = ObjectCreationHandling.Auto/* avoids issue where Json.NET can't determine concrete type for interface */)] public new ISemanticVersion Version { get { return base.Version; } diff --git a/src/StardewModdingAPI/ModHelper.cs b/src/StardewModdingAPI/ModHelper.cs index 7304c5ea..78b3eefa 100644 --- a/src/StardewModdingAPI/ModHelper.cs +++ b/src/StardewModdingAPI/ModHelper.cs @@ -11,6 +11,17 @@ namespace StardewModdingAPI public class ModHelper : IModHelper { /********* + ** Properties + *********/ + /// <summary>The JSON settings to use when serialising and deserialising files.</summary> + private readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings + { + Formatting = Formatting.Indented, + ObjectCreationHandling = ObjectCreationHandling.Replace // avoid issue where default ICollection<T> values are duplicated each time the config is loaded + }; + + + /********* ** Accessors *********/ /// <summary>The mod directory path.</summary> @@ -82,7 +93,7 @@ namespace StardewModdingAPI } // deserialise model - TModel model = JsonConvert.DeserializeObject<TModel>(json); + TModel model = JsonConvert.DeserializeObject<TModel>(json, this.JsonSettings); if (model is IConfigFile) { var wrapper = (IConfigFile)model; @@ -108,7 +119,7 @@ namespace StardewModdingAPI Directory.CreateDirectory(dir); // write file - string json = JsonConvert.SerializeObject(model, Formatting.Indented); + string json = JsonConvert.SerializeObject(model, this.JsonSettings); File.WriteAllText(path, json); } } |