FSharp.JSerde
0.0.6
.NET 6.0
dotnet add package FSharp.JSerde --version 0.0.6
NuGet\Install-Package FSharp.JSerde -Version 0.0.6
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.JSerde" Version="0.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FSharp.JSerde --version 0.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FSharp.JSerde, 0.0.6"
#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.JSerde as a Cake Addin
#addin nuget:?package=FSharp.JSerde&version=0.0.6
// Install FSharp.JSerde as a Cake Tool
#tool nuget:?package=FSharp.JSerde&version=0.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FSharp.JSerde: JSON Serialization for F# Types
Example
#r "nuget: FSharp.JSerde"
open FSharp.JSerde
type UnionType =
| Case1
| Case2 of string
| Case3 of {| Foo: int; Bar: bool |}
type SingleCaseUnion = private SingleCaseUnion of int
type RecordType = {
A: string
B: int option
C: Map<SingleCaseUnion, UnionType option>
}
let value = {
A = "hello"
B = Some 123
C = Map [
SingleCaseUnion 111, Some Case1
SingleCaseUnion 222, None
SingleCaseUnion 333, Some (Case2 "bye")
SingleCaseUnion 444, Some (Case3 {| Foo = 555; Bar = true |})
]
}
let json = JSerde.toJsonString JSerde.Config.Default value
printfn "json = %O" json
let parsed = JSerde.fromJsonString<RecordType> JSerde.Config.Default json
printfn "parsed = %A" parsed
Output:
json = {"A":"hello","B":123,"C":{"111":"Case1","222":null,"333":{"Case2":"bye"},"444":{"Case3":{"Bar":true,"Foo":555}}}}
Union tagging
You can configure union type's tagging style by JSerde.Config
.
type UnionType =
| Case1
| Case2 of string
| Case3 of {| Foo: int; Bar: bool |}
[<Test>]
let testUnionTagging () =
let taggingCfg = { JSerde.Config.Default with UnionTagging = Some { Tag = "t"; Content = "c" } }
let json1 = Case1 |> JSerde.toJsonString JSerde.Config.Default
let json2 = Case1 |> JSerde.toJsonString taggingCfg
Assert.AreEqual (json1, "\"Case1\"")
Assert.AreEqual (json2, "{\"t\":\"Case1\"}")
let json1 = Case2 "hello" |> JSerde.toJsonString JSerde.Config.Default
let json2 = Case2 "hello" |> JSerde.toJsonString taggingCfg
Assert.AreEqual (json1, "{\"Case2\":\"hello\"}")
Assert.AreEqual (json2, "{\"t\":\"Case2\",\"c\":\"hello\"}")
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- FSharp.Core (>= 6.0.7)
- FSharp.Data (>= 4.2.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.