Sparkdo.Json
2.0.0-preview.2
dotnet add package Sparkdo.Json --version 2.0.0-preview.2
NuGet\Install-Package Sparkdo.Json -Version 2.0.0-preview.2
<PackageReference Include="Sparkdo.Json" Version="2.0.0-preview.2" />
<PackageVersion Include="Sparkdo.Json" Version="2.0.0-preview.2" />
<PackageReference Include="Sparkdo.Json" />
paket add Sparkdo.Json --version 2.0.0-preview.2
#r "nuget: Sparkdo.Json, 2.0.0-preview.2"
#:package Sparkdo.Json@2.0.0-preview.2
#addin nuget:?package=Sparkdo.Json&version=2.0.0-preview.2&prerelease
#tool nuget:?package=Sparkdo.Json&version=2.0.0-preview.2&prerelease
Sparkdo.Json
Sparkdo.Json 是 source-generated JSON resolver 的运行时产品包。它把 generated contributors 组合为命名 JsonSerializerOptions,并提供默认 IJsonSerializer。
职责
- 通过
SparkdoJsonManifest声明 runtime、默认 serializer 与 application bootstrap contribution。 - 由 application bootstrap 注册 options 基础设施与 generated contributors。
- 用
JsonOptionsBuilder组合 generated 或手动 resolver contribution。 - 用
SparkdoJsonSerializerOptions配置 default 或 named options。 - 用
JsonSerializationRuntime缓存并解析JsonTypeInfo。 - 用
DefaultJsonSerializer提供同步、Type和 stream 异步序列化。
非职责
- 不扫描程序集发现
JsonSerializerContext。 - 不回退到 reflection-based serialization。
- 不允许 options callback 替代 generated resolver chain;resolver 必须通过
JsonOptionsBuilder.AddResolver(...)注册。 - 不拥有 context discovery 或 generated source emission。
- 运行时产品程序集不依赖 Hosting,也不提供公共 bootstrap helper。
关键入口
| API | 用途 |
|---|---|
SparkdoJsonManifest |
声明 runtime、serializer 和 application bootstrap contribution。 |
IJsonOptionsContributor |
向运行时交付 generated 或手写 resolver。 |
SparkdoJsonSerializerOptions.ConfigureDefault(...) |
配置 default options。 |
SparkdoJsonSerializerOptions.Configure(name, ...) |
配置 named options。 |
IJsonSerializer |
执行 source-generated JSON 序列化。 |
集成
using System.Text.Json.Serialization;
using Sparkdo.Json;
[SparkdoJsonContext]
[JsonSerializable(typeof(Order))]
internal partial class ApplicationJsonContext : JsonSerializerContext;
编译器为 context 生成 public IJsonOptionsContributor 实现,并在 Application role 生成固定 bootstrap contribution,把当前项目与引用程序集的 generated contributors 注册到运行时集合。手写 contributor 不参与生成器发现,应在入口程序显式注册。
手动配置仍使用标准 options 注册链:
builder.Services.Configure<SparkdoJsonSerializerOptions>(options =>
options.ConfigureDefault(json => json.WriteIndented = true));
运行时对未注册类型和跨 name 歧义 fail closed,不会退回反射序列化。
依赖
运行时面向 net10.0,依赖 Sparkdo.Json.Abstractions、Sparkdo.Manifest、Microsoft.Extensions.Options 和 System.Text.Json。包同时携带 Sparkdo.Json.Compiler analyzer。
验证
dotnet test src/json/test/Sparkdo.Json.Tests/Sparkdo.Json.Tests.csproj --no-restore -p:UseSharedCompilation=false -nr:false
| 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.DependencyInjection.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
- Sparkdo.Json.Abstractions (>= 2.0.0-preview.2)
- Sparkdo.Manifest (>= 2.0.0-preview.2)
NuGet packages (12)
Showing the top 5 NuGet packages that depend on Sparkdo.Json:
| Package | Downloads |
|---|---|
|
Sparkdo.Localization
Sparkdo Localization 的 VFS JSON runtime、文化回退与 package manifest。 |
|
|
Sparkdo.Caching
Sparkdo Caching 分布式缓存 API、默认内存分布式 provider 与 package manifest。 |
|
|
Sparkdo.BackgroundJobs
Sparkdo 后台作业库,提供后台任务调度和执行功能实现 |
|
|
Sparkdo.Kafka
Sparkdo Kafka 集成库,提供 Kafka 消息队列的生产者和消费者功能实现 |
|
|
Sparkdo.AspNetCore
Sparkdo ASP.NET Core 集成库,提供与 ASP.NET Core 框架深度集成的功能实现 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.2 | 79 | 7/20/2026 |
| 2.0.0-preview.1 | 64 | 7/18/2026 |
| 1.0.4-preview.3 | 262 | 6/8/2026 |
| 1.0.4-preview.2 | 243 | 6/7/2026 |
| 1.0.4-preview.1 | 260 | 6/7/2026 |
| 1.0.3 | 588 | 6/6/2026 |
| 1.0.3-preview.1 | 272 | 5/17/2026 |
| 1.0.2 | 481 | 4/27/2026 |
| 1.0.2-preview.5 | 125 | 4/15/2026 |
| 1.0.2-preview.4 | 138 | 2/8/2026 |
| 1.0.2-preview.3 | 132 | 2/1/2026 |
| 1.0.2-preview.2 | 142 | 1/31/2026 |
| 1.0.2-preview.1 | 207 | 12/4/2025 |
| 1.0.1 | 1,403 | 11/27/2025 |
| 1.0.0 | 1,351 | 11/25/2025 |
| 1.0.0-preview.5 | 146 | 10/24/2025 |