A set of Converters for Json.Net that (de)serialize unions in a nicer format than the out-of-box converters.
The provided converters are:
OptionConverter
- allows for use of options instead of nullables, treats Null as None
SingleCaseDuConverter
- reads and writes enum-style DU's (ie
type Foo = | Bar | Baz | Qux
) as their string name
- reads and writes enum-style DU's (ie
MultiCaseDuConverter
- reads and writes DUs with data attached as an object with a
kind
property equal to the case name, and whose property names and values are drawn from the DU property names and value. This Converter is fairly fragile and requires that thekind
property (or a customizable property name) is first in order on the JSON.
- reads and writes DUs with data attached as an object with a
OutOfOrderMultiCaseDuConverter
- This converter reads/buffers the object properties of a JSON object and uses the property names to infer the correct DU case to deserialize into. It requires that your DU cases have property names that are set-distinct (that is no 100% overlap), and that the JSON contains all properties of the DU, even if some of them are
null
.
- This converter reads/buffers the object properties of a JSON object and uses the property names to infer the correct DU case to deserialize into. It requires that your DU cases have property names that are set-distinct (that is no 100% overlap), and that the JSON contains all properties of the DU, even if some of them are
MacOS/Linux | Windows |
---|---|
Stable | Prerelease |
---|---|
Make sure the following requirements are installed in your system:
- dotnet SDK 2.0 or higher
- Mono if you're on Linux or macOS.
> build.cmd // on windows
$ ./build.sh // on unix
CONFIGURATION
will set the configuration of the dotnet commands. If not set it will default to Release.CONFIGURATION=Debug ./build.sh
will result in things likedotnet build -c Debug
GITHUB_TOKEN
will be used to upload release notes and nuget packages to github.- Be sure to set this before releasing
The WatchTests
target will use dotnet-watch to watch for changes in your lib or tests and re-run your tests on all TargetFrameworks
./build.sh WatchTests
git add .
git commit -m "Scaffold"
git remote add origin origin https://github.com/user/MyCoolNewLib.git
git push -u origin master
paket config add-token "https://www.nuget.org" 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a
-
- You can then set the
GITHUB_TOKEN
to upload release notes and artifacts to github - Otherwise it will fallback to username/password
- You can then set the
-
Then update the
RELEASE_NOTES.md
with a new version, date, and release notes ReleaseNotesHelper
#### 0.2.0 - 2017-04-20
* FEATURE: Does cool stuff!
* BUGFIX: Fixes that silly oversight
- You can then use the
Release
target. This will:- make a commit bumping the version:
Bump version to 0.2.0
and add the release notes to the commit - publish the package to nuget
- push a git tag
- make a commit bumping the version:
./build.sh Release