Skip to main content

Elm-inspired encoder and decoder for JSON, this package is the core library which can be used on any F# project. Pick the right additional package for your runtime: - Thoth.Json.JavaScript - Thoth.Json.Python - Thoth.Json.Newtonsoft - Thoth.Json.System.Text.Json

Total Downloads
0
0
Published
Oct 4, 2026
15d ago

Get Started

dotnet add package Beardmouse.Thoth.Json.Core --version 0.9.1
ProductVersions
.NET Standard
netstandard2.0

README

Thoth.Json

Tests

JSON the simple and safe way, for F# on .NET, JavaScript and Python.

Documentation

Packages

Thoth.Json.Core holds the API. Add it, plus the package for the runtime your code targets.

Package
Thoth.Json.Core Decoders, encoders and codecs
Thoth.Json.Core.Auto Coders generated from F# types
Thoth.Json.JavaScript Fable, compiling to JavaScript
Thoth.Json.Python Fable, compiling to Python
Thoth.Json.Newtonsoft .NET, on top of Newtonsoft.Json
Thoth.Json.System.Text.Json .NET, on top of System.Text.Json

Thoth.Json and Thoth.Json.Net are the previous generation of the library. Their documentation is under the Legacy version of the site.

Benchmark

Remark

We are comparing the performance of Thoth.Json with standard JSON libraries like Newtonsoft.Json and System.Text.Json.

Thoth.Json is expected to be slower than these libraries because it uses them internally.

It is also important to note that Thoth.Json solve a different problem than these libraries. It aims to provide a cross-platform API for .NET, JavaScript, Python, etc. with a focus on the developer experience and type safety.

For most of the use cases, Thoth.Json should be fast enough, not everyone needs to parse JSON at the speed of light.

BenchmarkDotNet v0.15.8, Linux Arch Linux
Intel Core i9-14900K 0.80GHz, 1 CPU, 32 logical and 24 physical cores
.NET SDK 10.0.300
  [Host]     : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3 DEBUG
  DefaultJob : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3


| Method                      | Mean       | Error    | StdDev   | Ratio | RatioSD |
|---------------------------- |-----------:|---------:|---------:|------:|--------:|
| System.Text.Json            |   434.9 ns |  1.60 ns |  1.49 ns |  1.00 |    0.00 |
| Newtonsoft                  |   806.6 ns |  1.96 ns |  1.53 ns |  1.85 |    0.01 |
| Thoth.Json.System.Text.Json | 1,183.1 ns |  3.36 ns |  3.14 ns |  2.72 |    0.01 |
| Thoth.Json.Newtonsoft       | 2,072.9 ns | 13.54 ns | 12.66 ns |  4.77 |    0.03 |

Blogs post

This is to keep track of different blog post that I refer to sometimes when thinking or helping people.

Project structure

Tests

For the tests, we use a shared project Thoth.Json.Tests that is referenced by the different runners. This is because we want each runner to only have the minimum amount of dependencies, and also if we include files from outside the .fsproj folder, then some generated files by Fable escape from the specify outDir.

Downloads by Version

Not enough data for chart

Similar & Alternative Packages

Hand-picked matching NuGet libraries based on tags & ecosystem

Depended On By

Find packages that declare this package as a dependency. NuGet does not provide a reverse-dependency endpoint, so candidates are checked on demand.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.