# Nucs.JsonSettings > The easiest way to write settings for your .NET app - cross-platform, modular, one-liner, built on Json.NET. ## Installation ```bash dotnet add package Nucs.JsonSettings dotnet add package Nucs.JsonSettings.Autosave ``` ## Quick Start ```csharp using Nucs.JsonSettings; class MySettings : JsonSettings { public override string FileName { get; set; } = "config.json"; public string Name { get; set; } = "default"; } var settings = JsonSettings.Load("config.json"); settings.Name = "ok"; settings.Save(); ``` ## Documentation - [Autosave](https://nucs.github.io/JsonSettings/docs/autosave.html): Autosave persists your settings automatically whenever a property changes — no explicit Save() call. Mark a settings class [Autosave] and every property setter commits a save. - [Converters](https://nucs.github.io/JsonSettings/docs/converters.html): Defining converters (or changing serialization settings globally) can be done by adding a converter to the static JsonSettings.SerializationSettings: - [Dynamic Settings Bag](https://nucs.github.io/JsonSettings/docs/dynamic-settings-bag.html): SettingsBag internally stores a key/value dictionary. Any type of value can be passed as long as Json.NET knows how to serialize it. SettingsBag has a built-in feature for autosaving that can be - [Encryption](https://nucs.github.io/JsonSettings/docs/encryption.html): Encryption is applied as a [module](modulation-api.md), so it works with any settings class, hardcoded or [dynamic](dynamic-settings-bag.md). The serialized JSON is encoded to UTF-8 bytes and - [Introduction](https://nucs.github.io/JsonSettings/docs/intro.html): the serialization capabilities of [Json.NET](https://www.newtonsoft.com/json/help/html/SerializationGuide.htm) to serialize nested (custom) objects, dictionaries and lists as simply as creating a POCO - [Modulation API](https://nucs.github.io/JsonSettings/docs/modulation-api.html): Every optional behavior in the library — [encryption](encryption.md), Base64, [versioning](versioning.md), [recovery](recovery.md) and [autosave](autosave.md) — is a - [Notifications & Data Binding](https://nucs.github.io/JsonSettings/docs/notifications.html): Turn a settings class into an observable, bindable object. This guide covers producing INotifyPropertyChanged / INotifyPropertyChanging notifications from your setters with the - [Recovery](https://nucs.github.io/JsonSettings/docs/recovery.html): The RecoveryModule provides handling for a JsonException thrown while JsonSettings parses the file during loading. On failure, one of the following RecoveryAction values decides what happens: - [Changing JsonSerializerSettings](https://nucs.github.io/JsonSettings/docs/serialization-settings.html): The default settings are defined on the static JsonSettings.SerializationSettings: - [The Basics](https://nucs.github.io/JsonSettings/docs/the-basics.html): JsonSettings is the base abstract class serving as the base class for all settings objects you define. Creation and loading are done through the static API; saving is done through the settings - [Versioning](https://nucs.github.io/JsonSettings/docs/versioning.html): VersioningModule gives you the ability to enforce a specific version, so that when new changes are introduced to your settings class (its scheme), a user-defined action can take place. Any of the ## API Reference - [Nucs.JsonSettings.JsonSettings](https://nucs.github.io/JsonSettings/api/Nucs.JsonSettings.JsonSettings.html): Abstract base class for hardcoded settings - [Nucs.JsonSettings.SettingsBag](https://nucs.github.io/JsonSettings/api/Nucs.JsonSettings.SettingsBag.html): Dynamic key/value settings - [Nucs.JsonSettings.Fluent.FluentJsonSettings](https://nucs.github.io/JsonSettings/api/Nucs.JsonSettings.Fluent.FluentJsonSettings.html): Fluent configuration extensions ## Key Concepts - **JsonSettings**: Inherit this for a typed, hardcoded settings POCO. - **SettingsBag**: A dynamic key/value settings object; no class to define. - **Modules**: Encryption, Base64, Versioning, Recovery and Autosave attach per object. - **Load / Construct / Configure**: Read a file, build an empty instance, or configure fluently. - **Autosave**: Persist automatically on change (requires Nucs.JsonSettings.Autosave). ## Optional - [Full API Reference](https://nucs.github.io/JsonSettings/api/): Complete class and method documentation - [GitHub Repository](https://github.com/Nucs/JsonSettings): Source code and issues - [NuGet Package](https://www.nuget.org/packages/Nucs.JsonSettings): Latest releases