summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/StardewModdingAPI/Manifest.cs1
-rw-r--r--src/StardewModdingAPI/ModHelper.cs15
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);
}
}