Skip to content

Migrate from Newtonsoft.Json to System.Text.Json #83

Closed

Description

@ChrisonSimtian

Long-tail consolidation — currently both Newtonsoft.Json and System.Text.Json are in the dependency graph. Newtonsoft.Json is used directly in several places + dragged in by NJsonSchema.NewtonsoftJson. System.Text.Json is the modern standard and ships with .NET.

Scope:

  • Replace direct usages of Newtonsoft.Json.Linq / JsonConvert etc. with System.Text.Json. Largest call sites likely in Fallout.Utilities.Text.Json, Fallout.SolutionModel, Fallout.GlobalTool parameters file handling.
  • Replace NJsonSchema.NewtonsoftJson with NJsonSchema configured to use System.Text.Json (NJsonSchema supports it natively).
  • Drop Newtonsoft.Json PackageVersion.

Bigger lift; benefits: one fewer dep, modern JSON pipeline, smaller package graph.

Refs the dependency audit.

Activity

  1. ChrisonSimtian commented on May 22, 2026

    @ChrisonSimtian
    CollaboratorAuthor

    Scoping done. Migration broken into 6 sub-issues (this issue stays as the umbrella tracker; closes when all six close):

    Anchor work landed: StronglyTypedSolutionGenerator migrated to STJ in 54a1655 (parameters.json read, the simplest isolated callsite).

    Three of the six sub-issues are independent and pickable now: STJ-1, STJ-2, STJ-6. STJ-4/STJ-5 wait on STJ-3, which is the breaking-change one and needs deliberate scheduling against a major release.

  2. ChrisonSimtian commented on May 25, 2026

    @ChrisonSimtian
    CollaboratorAuthor

    Closed — entire STJ migration tree complete. STJ-1 #114, STJ-2 #115, STJ-3 #116, STJ-4 #117, STJ-5 #118, STJ-6 #119. No Fallout source uses Newtonsoft.Json anymore; the package survives in the closure only as a transitive of NuGet.Packaging + Serilog.Formatting.Compact.Reader.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions