Portable.System.DateTimeOnly.Json
8.0.2
See the version list below for details.
dotnet add package Portable.System.DateTimeOnly.Json --version 8.0.2
NuGet\Install-Package Portable.System.DateTimeOnly.Json -Version 8.0.2
<PackageReference Include="Portable.System.DateTimeOnly.Json" Version="8.0.2" />
<PackageVersion Include="Portable.System.DateTimeOnly.Json" Version="8.0.2" />
<PackageReference Include="Portable.System.DateTimeOnly.Json" />
paket add Portable.System.DateTimeOnly.Json --version 8.0.2
#r "nuget: Portable.System.DateTimeOnly.Json, 8.0.2"
#:package Portable.System.DateTimeOnly.Json@8.0.2
#addin nuget:?package=Portable.System.DateTimeOnly.Json&version=8.0.2
#tool nuget:?package=Portable.System.DateTimeOnly.Json&version=8.0.2
Portable.System.DateTimeOnly.Json
The System.Text.Json NuGet package contains the built-in support for the System.DateOnly and System.TimeOnly types serialization/deserialization. Of course, the backported versions of the same types from the Portable.System.DateTimeOnly NuGet package are not supported by default by this library. If you already use the portable versions of these types in your code and want to make them compatible with the System.Text.Json you can implement custom converters or use this package for cross-framework compatible approach.
Reflection-based Serialization
The package provides two concrete implementations of the System.Text.Json.Serialization.JsonConverter<T> class: System.Text.Json.DateOnlyConverter and System.Text.Json.TimeOnlyConverter for converting System.DateOnly and System.TimeOnly data types. You can use this converter as usual System.Text.Json converters: with the System.Text.Json.Serialization.JsonConverterAttribute attribute or System.Text.Json.JsonSerializerOptions.Converters property.
The main disadvantage of this "direct" approach for configuring System.DateOnly and System.TimeOnly data types handling by the System.Text.Json library is that in this case you'll always use the backported converters even if your code runs on .NET 6 and later. The package also provides two helper attributes System.Text.Json.DateOnlyConverterAttribute and System.Text.Json.TimeOnlyConverterAttribute for mitigating this problem. These attributes use built-in converters on .NET 6 and later and fall back to the backported one in other cases.
Source Generators Workaround
Unfortunately, attributes-based approach will not work if you'll try to use System.DateOnly and/or System.TimeOnly data types with the System.Text.Json source generators. The only way to make generated code compilable is to use any type names not equal to System.DateOnly and/or System.TimeOnly available in object graph processed by the source generator.
The package provides two helper types: System.Text.Json.DateOnly and System.Text.Json.TimeOnly (same class names but different full type names). These types have no public properties but they provide implicit conversion operations from/to the System.DateOnly and System.TimeOnly data types respectively. You can use them safely in your JSON-mapping objects with any type of serialization available in the System.Text.Json library. These types have custom System.Text.Json.Serialization.JsonConverterAttribute applied with helper converters that delegate work to System.Text.Json.DateOnlyConverter and System.Text.Json.TimeOnlyConverter types without code duplication.
Contributors
Thanks a lot for all contributors. See the full list of project supporters in the CONTRIBUTORS file.
SAST Tools
This project uses PVS-Studio - static analyzer for C, C++, C#, and Java code.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. 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. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Portable.System.DateTimeOnly (>= 8.0.1)
- System.Text.Json (>= 8.0.5)
-
net6.0
- System.Text.Json (>= 8.0.5)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Portable.System.DateTimeOnly.Json:
| Package | Downloads |
|---|---|
|
ShopifySharp
ShopifySharp is a C# and .NET library that helps developers easily authenticate with and manage Shopify stores. |
|
|
Shinya.Core
Shinya.Framework |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Portable.System.DateTimeOnly.Json:
| Repository | Stars |
|---|---|
|
nozzlegear/ShopifySharp
ShopifySharp is a .NET library that helps developers easily authenticate with and manage Shopify stores using Shopify's GraphQL API.
|
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 9.1.0 | 2,175 | 9/6/2025 | |
| 9.1.0-beta1 | 1,297 | 3/1/2025 | |
| 9.0.0 | 12,771 | 1/10/2025 | |
| 9.0.0-beta1 | 357 | 11/16/2024 | |
| 8.0.2 | 1,698 | 10/11/2024 | |
| 8.0.1 | 9,661 | 7/13/2024 | |
| 8.0.0 | 5,428 | 6/16/2024 |
- The `System.Text.Json` updated to version 8.0.5 with fix for the CVE-2024-43485 vulnerability.