FSharp.JsonSerializer
0.0.3
dotnet add package FSharp.JsonSerializer --version 0.0.3
NuGet\Install-Package FSharp.JsonSerializer -Version 0.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FSharp.JsonSerializer" Version="0.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FSharp.JsonSerializer --version 0.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FSharp.JsonSerializer, 0.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FSharp.JsonSerializer as a Cake Addin #addin nuget:?package=FSharp.JsonSerializer&version=0.0.3 // Install FSharp.JsonSerializer as a Cake Tool #tool nuget:?package=FSharp.JsonSerializer&version=0.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FSharp.JsonSerializer
Json Serializer using System.Text.Json that uses named fields.
type Union =
| CaseA of alpha: int * beta: int
and
type Union =
| CaseA of {| alpha: int; beta: int |}
are both serialized as
{type: "CaseA", alpha: 1, beta: 2}
Add converters to JsonSerializerOptions
let options = JsonSerializerOptions()
options.Converters.Add(OptionJsonConverter())
options.Converters.Add(TupleJsonConverter())
options.Converters.Add(UntaggedUnionJsonConverter(fun t -> t.IsGenericType && t.GetGenericTypeDefinition() = typedefof<Choice<_,_>> ))
options.Converters.Add(TaggedUnionJsonConverter())
Examples of encoding
test "Option" {
assertRoundTrip (Some 1) "1"
assertRoundTrip None "null"
}
test "Tuple" {
assertRoundTrip (1, 2) "[1,2]"
assertRoundTrip (1, 2, 3) "[1,2,3]"
}
test "List" {
assertRoundTrip [1; 2; 3] "[1,2,3]"
}
test "Union" {
assertRoundTrip Empty """{"type":"Empty"}"""
assertRoundTrip (Unnamed 1) """{"type":"Unnamed","Item":1}"""
assertRoundTrip (Inline 1) """{"type":"Inline","alpha":1}"""
assertRoundTrip (Record { alpha = 1; beta = 2 }) """{"type":"Record","alpha":1,"beta":2}"""
assertRoundTrip (Fields (1, 2)) """{"type":"Fields","alpha":1,"beta":2}"""
}
test "Result" {
assertRoundTrip (Ok [1; 2]) """{"type":"Ok","ResultValue":[1,2]}"""
assertRoundTrip (Ok (Ok [1; 2])) """{"type":"Ok","ResultValue":{"type":"Ok","ResultValue":[1,2]}}"""
}
test "Choice" {
assertRoundTrip (Choice1Of2 "Hello") "\"Hello\""
assertRoundTrip (Choice2Of2 5) "5"
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- FSharp.Core (>= 4.7.0)
- System.Text.Json (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.