Quartz.Serialization.Newtonsoft
4.0.0
Prefix Reserved
dotnet add package Quartz.Serialization.Newtonsoft --version 4.0.0
NuGet\Install-Package Quartz.Serialization.Newtonsoft -Version 4.0.0
<PackageReference Include="Quartz.Serialization.Newtonsoft" Version="4.0.0" />
<PackageVersion Include="Quartz.Serialization.Newtonsoft" Version="4.0.0" />
<PackageReference Include="Quartz.Serialization.Newtonsoft" />
paket add Quartz.Serialization.Newtonsoft --version 4.0.0
#r "nuget: Quartz.Serialization.Newtonsoft, 4.0.0"
#:package Quartz.Serialization.Newtonsoft@4.0.0
#addin nuget:?package=Quartz.Serialization.Newtonsoft&version=4.0.0
#tool nuget:?package=Quartz.Serialization.Newtonsoft&version=4.0.0
Quartz.Serialization.Newtonsoft
Quartz.Serialization.Newtonsoft serializes what a Quartz.NET ADO.NET job store persists — job data maps, calendars and trigger state — with Json.NET.
System.Text.Json serialization is built into the core
Quartz package and is the default, so reach for this one when
what is already in your database was written by Json.NET, or when your job data depends on how Json.NET
handles it. It is the successor to Quartz 3's Quartz.Serialization.Json.
Installation
dotnet add package Quartz.Serialization.Newtonsoft
Usage
builder.Services.AddQuartz(q => q.UsePersistentStore(store =>
{
store.UseSqlServer(connectionString);
store.ConfigureStore(options => options.StoreJobDataAsStrings = true);
store.UseNewtonsoftJsonSerializer();
}));
The same UseNewtonsoftJsonSerializer call configures a store built without a host, and the flat key
quartz.serializer.type = newtonsoft selects it from configuration.
StoreJobDataAsStrings is worth setting whichever serializer you use: it keeps job data out of the
serializer altogether, which is what avoids surprises when a persisted type later changes shape.
A job data value has to be one of the types JobDataMap declares an accessor for, or a
Dictionary<string, string> — the same set the System.Text.Json serializer accepts, so a blob written
here is one the other reader has an answer for. Anything else is refused when the job is stored, naming
the entry and the type; declare a type of your own with
NewtonsoftJsonSerializerRegistry.AddJobDataValueType<T>().
Trimming
This package is deliberately not trimmable, and does not declare IsTrimmable. Json.NET decides what
a type looks like by reflecting over it — a contract resolver reads the members of whatever it is handed
and constructs it — and there is no source-generated form of that to move to. Marking the package
trimmable would tell the trimmer it may remove members that a job data map is about to be deserialized
into, and the failure would arrive at run time when a job fires.
Publish trimmed or native AOT with the System.Text.Json serializer instead, which is built into the
Quartz package and is the default. It carries a source-generated contract for everything a job store
writes, and SystemTextJsonSerializerRegistry.AddTypeInfoResolver is where an application's own job data
value types are declared.
Documentation
https://www.quartz-scheduler.net/documentation/quartz-4.x/packages/json-serialization.html
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Microsoft.Extensions.Configuration.Binder (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- Newtonsoft.Json (>= 13.0.4)
- Quartz (>= 4.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.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.0 | 102 | 9/3/2026 |
| 4.0.0-rc.2 | 41 | 9/3/2026 |
| 4.0.0-rc.1 | 42 | 9/3/2026 |
| 4.0.0-beta.1 | 38 | 9/2/2026 |
| 4.0.0-alpha.5 | 49 | 8/31/2026 |
| 4.0.0-alpha.4 | 43 | 8/31/2026 |
| 4.0.0-alpha.3 | 48 | 8/27/2026 |
| 4.0.0-alpha.2 | 58 | 8/25/2026 |
| 4.0.0-alpha.1 | 65 | 8/22/2026 |