System.Text.Json
                              
                            
                                9.0.7
                            
                        
                            
                                
                                
                                    Prefix Reserved
                                
                            
                    See the version list below for details.
dotnet add package System.Text.Json --version 9.0.7
NuGet\Install-Package System.Text.Json -Version 9.0.7
<PackageReference Include="System.Text.Json" Version="9.0.7" />
<PackageVersion Include="System.Text.Json" Version="9.0.7" />
<PackageReference Include="System.Text.Json" />
paket add System.Text.Json --version 9.0.7
#r "nuget: System.Text.Json, 9.0.7"
#:package System.Text.Json@9.0.7
#addin nuget:?package=System.Text.Json&version=9.0.7
#tool nuget:?package=System.Text.Json&version=9.0.7
About
Provides high-performance and low-allocating types that serialize objects to JavaScript Object Notation (JSON) text and deserialize JSON text to objects, with UTF-8 support built-in. Also provides types to read and write JSON text encoded as UTF-8, and to create an in-memory document object model (DOM), that is read-only, for random access of the JSON elements within a structured view of the data.
Key Features
- High-performance reader and writer types for UTF-8 encoded JSON.
- A fully-featured JSON serializer for .NET types using reflection or source generated contracts.
- A high-performance read-only JSON DOM (JsonDocument) and a mutable DOM that interoperates with the serializer (JsonNode).
- Built-in support for async serialization, including IAsyncEnumerable support.
- Fully customizable contract model for serializable types.
How to Use
The System.Text.Json library is built-in as part of the shared framework in .NET Runtime. The package can be installed when you need to use the most recent version in older target frameworks.
Serialization:
using System;
using System.Text.Json;
WeatherForecast forecast = new (DateTimeOffset.Now, 26.6f, "Sunny");
var serialized = JsonSerializer.Serialize(forecast);
Console.WriteLine(serialized);
// {"Date":"2023-08-02T16:01:20.9025406+00:00","TemperatureCelsius":26.6,"Summary":"Sunny"}
var forecastDeserialized = JsonSerializer.Deserialize<WeatherForecast>(serialized);
Console.WriteLine(forecast == forecastDeserialized);
// True
public record WeatherForecast(DateTimeOffset Date, float TemperatureCelsius, string? Summary);
Serialization using the source generator:
using System.Text.Json;
using System.Text.Json.Serialization;
WeatherForecast forecast = new (DateTimeOffset.Now, 26.6f, "Sunny");
var serialized = JsonSerializer.Serialize(forecast, SourceGenerationContext.Default.WeatherForecast);
Console.WriteLine(serialized);
// {"Date":"2023-08-02T16:01:20.9025406+00:00","TemperatureCelsius":26.6,"Summary":"Sunny"}
var forecastDeserialized = JsonSerializer.Deserialize<WeatherForecast>(serialized, SourceGenerationContext.Default.WeatherForecast);
Console.WriteLine(forecast == forecastDeserialized);
// True
public record WeatherForecast(DateTimeOffset Date, float TemperatureCelsius, string? Summary);
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(WeatherForecast))]
internal partial class SourceGenerationContext : JsonSerializerContext
{
}
Using the JSON DOM:
using System;
using System.Text.Json;
using System.Text.Json.Nodes;
string jsonString =
@"{
  ""Date"": ""2019-08-01T00:00:00"",
  ""Temperature"": 25,
  ""Summary"": ""Hot"",
  ""DatesAvailable"": [
    ""2019-08-01T00:00:00"",
    ""2019-08-02T00:00:00""
  ],
  ""TemperatureRanges"": {
      ""Cold"": {
          ""High"": 20,
          ""Low"": -10
      },
      ""Hot"": {
          ""High"": 60,
          ""Low"": 20
      }
  }
}
";
JsonNode forecastNode = JsonNode.Parse(jsonString)!;
// Get value from a JsonNode.
JsonNode temperatureNode = forecastNode["Temperature"]!;
Console.WriteLine($"Type={temperatureNode.GetType()}");
Console.WriteLine($"JSON={temperatureNode.ToJsonString()}");
//output:
//Type = System.Text.Json.Nodes.JsonValue`1[System.Text.Json.JsonElement]
//JSON = 25
// Get a typed value from a JsonNode.
int temperatureInt = (int)forecastNode["Temperature"]!;
Console.WriteLine($"Value={temperatureInt}");
//output:
//Value=25
// Get a typed value from a JsonNode by using GetValue<T>.
temperatureInt = forecastNode["Temperature"]!.GetValue<int>();
Console.WriteLine($"TemperatureInt={temperatureInt}");
//output:
//Value=25
// Get a JSON object from a JsonNode.
JsonNode temperatureRanges = forecastNode["TemperatureRanges"]!;
Console.WriteLine($"Type={temperatureRanges.GetType()}");
Console.WriteLine($"JSON={temperatureRanges.ToJsonString()}");
//output:
//Type = System.Text.Json.Nodes.JsonObject
//JSON = { "Cold":{ "High":20,"Low":-10},"Hot":{ "High":60,"Low":20} }
// Get a JSON array from a JsonNode.
JsonNode datesAvailable = forecastNode["DatesAvailable"]!;
Console.WriteLine($"Type={datesAvailable.GetType()}");
Console.WriteLine($"JSON={datesAvailable.ToJsonString()}");
//output:
//datesAvailable Type = System.Text.Json.Nodes.JsonArray
//datesAvailable JSON =["2019-08-01T00:00:00", "2019-08-02T00:00:00"]
// Get an array element value from a JsonArray.
JsonNode firstDateAvailable = datesAvailable[0]!;
Console.WriteLine($"Type={firstDateAvailable.GetType()}");
Console.WriteLine($"JSON={firstDateAvailable.ToJsonString()}");
//output:
//Type = System.Text.Json.Nodes.JsonValue`1[System.Text.Json.JsonElement]
//JSON = "2019-08-01T00:00:00"
// Get a typed value by chaining references.
int coldHighTemperature = (int)forecastNode["TemperatureRanges"]!["Cold"]!["High"]!;
Console.WriteLine($"TemperatureRanges.Cold.High={coldHighTemperature}");
//output:
//TemperatureRanges.Cold.High = 20
// Parse a JSON array
JsonNode datesNode = JsonNode.Parse(@"[""2019-08-01T00:00:00"",""2019-08-02T00:00:00""]")!;
JsonNode firstDate = datesNode[0]!.GetValue<DateTime>();
Console.WriteLine($"firstDate={ firstDate}");
//output:
//firstDate = "2019-08-01T00:00:00"
Using the low-level JSON reader/writer types
using System;
using System.IO;
using System.Text;
using System.Text.Json;
var writerOptions = new JsonWriterOptions
{
    Indented = true
};
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, writerOptions);
writer.WriteStartObject();
writer.WriteString("date", DateTimeOffset.Parse("8/2/2023 9:00 AM"));
writer.WriteNumber("temp", 42);
writer.WriteEndObject();
writer.Flush();
var jsonBytes = stream.ToArray();
string json = Encoding.UTF8.GetString(jsonBytes);
Console.WriteLine(json);
// {
//   "date": "2023-08-02T09:00:00+00:00"
//   "temp": 42
// }
var readerOptions = new JsonReaderOptions
{
    AllowTrailingCommas = true,
    CommentHandling = JsonCommentHandling.Skip
};
var reader = new Utf8JsonReader(jsonBytes, readerOptions);
while (reader.Read())
{
    Console.Write(reader.TokenType);
    switch (reader.TokenType)
    {
        case JsonTokenType.PropertyName:
        case JsonTokenType.String:
            {
                string? text = reader.GetString();
                Console.Write(" ");
                Console.Write(text);
                break;
            }
        case JsonTokenType.Number:
            {
                int intValue = reader.GetInt32();
                Console.Write(" ");
                Console.Write(intValue);
                break;
            }
            // Other token types elided for brevity
    }
    Console.WriteLine();
}
// StartObject
// PropertyName date
// String 2023-08-02T09:00:00+00:00
// PropertyName temp
// Number 42
// EndObject
Main Types
The main types provided by this library are:
- System.Text.Json.Utf8JsonWriter
- System.Text.Json.Utf8JsonReader
- System.Text.Json.JsonSerializer
- System.Text.Json.JsonConverter
- System.Text.Json.JsonDocument
- System.Text.Json.Nodes.JsonNode
- System.Text.Json.Serialization.Metadata.JsonTypeInfo
Additional Documentation
Related Packages
- Lightweight data formats abstraction: System.Memory.Data
- Serialization of HttpContent: System.Net.Http.Json
Feedback & Contributing
System.Text.Json is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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 is compatible. 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 is compatible. 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. | 
- 
                                                    .NETFramework 4.6.2- Microsoft.Bcl.AsyncInterfaces (>= 9.0.7)
- System.Buffers (>= 4.5.1)
- System.IO.Pipelines (>= 9.0.7)
- System.Memory (>= 4.5.5)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Encodings.Web (>= 9.0.7)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
 
- 
                                                    .NETStandard 2.0- Microsoft.Bcl.AsyncInterfaces (>= 9.0.7)
- System.Buffers (>= 4.5.1)
- System.IO.Pipelines (>= 9.0.7)
- System.Memory (>= 4.5.5)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Encodings.Web (>= 9.0.7)
- System.Threading.Tasks.Extensions (>= 4.5.4)
 
- 
                                                    net8.0- System.IO.Pipelines (>= 9.0.7)
- System.Text.Encodings.Web (>= 9.0.7)
 
- 
                                                    net9.0- No dependencies.
 
GitHub repositories (951)
Showing the top 20 popular GitHub repositories that depend on System.Text.Json:
| Repository | Stars | 
|---|---|
| microsoft/PowerToys 
                                                            Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks
                                                         | |
| jellyfin/jellyfin 
                                                            The Free Software Media System - Server Backend & API
                                                         | |
| files-community/Files 
                                                            A modern file manager that helps users organize their files and folders.
                                                         | |
| DevToys-app/DevToys 
                                                            A Swiss Army knife for developers.
                                                         | |
| microsoft/semantic-kernel 
                                                            Integrate cutting-edge LLM technology quickly and easily into your apps
                                                         | |
| dotnet/maui 
                                                            .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
                                                         | |
| dotnet/roslyn 
                                                            The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
                                                         | |
| peass-ng/PEASS-ng 
                                                            PEASS - Privilege Escalation Awesome Scripts SUITE (with colors)
                                                         | |
| bitwarden/server 
                                                            Bitwarden infrastructure/backend (API, database, Docker, etc).
                                                         | |
| dotnet/efcore 
                                                            EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.
                                                         | |
| Jackett/Jackett 
                                                            API Support for your favorite torrent trackers
                                                         | |
| abpframework/abp 
                                                            Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation.
                                                         | |
| MonoGame/MonoGame 
                                                            One framework for creating powerful cross-platform games.
                                                         | |
| Sonarr/Sonarr 
                                                            Smart PVR for newsgroup and bittorrent users.
                                                         | |
| Radarr/Radarr 
                                                            Movie organizer/manager for usenet and torrent users.
                                                         | |
| aspnetboilerplate/aspnetboilerplate 
                                                            ASP.NET Boilerplate - Web Application Framework
                                                         | |
| microsoft/garnet 
                                                            Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.
                                                         | |
| chocolatey/choco 
                                                            Chocolatey - the package manager for Windows
                                                         | |
| dotnet-architecture/eShopOnWeb 
                                                            Sample ASP.NET Core 8.0 reference application, now community supported: https://github.com/NimblePros/eShopOnWeb
                                                         | |
| mRemoteNG/mRemoteNG 
                                                            mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager.
                                                         | 
| Version | Downloads | Last Updated | 
|---|---|---|
| 10.0.0-rc.2.25466.103 | 0 | 9/22/2025 | 
| 10.0.0-rc.1.25451.107 | 0 | 9/22/2025 | 
| 10.0.0-rc.1.25421.113 | 0 | 8/28/2025 | 
| 10.0.0-preview.7.25380.108 | 0 | 8/11/2025 | 
| 10.0.0-preview.7.25380.105 | 0 | 8/6/2025 | 
| 10.0.0-preview.6.25358.103 | 0 | 7/17/2025 | 
| 10.0.0-preview.6.25321.102 | 0 | 6/25/2025 | 
| 9.0.10 | 2 | 9/23/2025 | 
| 9.0.7 | 23 | 7/11/2025 | 
| 2.0.0.6 | 369 | 11/26/2014 | 
| 2.0.0.5 | 60 | 11/26/2014 | 
| 2.0.0.4 | 61 | 11/25/2014 | 
| 2.0.0.3 | 178 | 11/23/2014 | 
| 2.0.0.2 | 138 | 11/22/2014 | 
| 2.0.0.1 | 127 | 11/21/2014 | 
| 2.0.0 | 129 | 11/21/2014 | 
| 1.9.9.9 | 150 | 11/20/2014 | 
| 1.9.9.8 | 196 | 11/20/2014 | 
| 1.9.9.7 | 288 | 11/17/2014 | 
| 1.9.9.6 | 201 | 11/12/2014 | 
| 1.9.9.5 | 211 | 11/11/2014 | 
| 1.9.9.4 | 224 | 11/11/2014 | 
| 1.9.9.3 | 381 | 11/10/2014 | 
| 1.9.9.2 | 727 | 11/5/2014 | 
| 1.9.9.1 | 213 | 1/6/2014 | 
| 1.9.9 | 60 | 1/5/2014 | 
| 1.9.8 | 69 | 1/3/2014 | 
| 1.9.7 | 59 | 1/2/2014 | 
| 1.9.6 | 63 | 1/2/2014 | 
| 1.9.5 | 73 | 12/31/2013 | 
| 1.9.4 | 74 | 12/31/2013 | 
| 1.9.3 | 72 | 12/31/2013 | 
| 1.9.2 | 69 | 12/30/2013 | 
| 1.9.1 | 69 | 12/30/2013 | 
| 1.9.0 | 69 | 12/30/2013 | 
| 1.8.0 | 73 | 12/29/2013 | 
| 1.7.0 | 71 | 12/29/2013 | 
| 1.6.0 | 72 | 12/28/2013 | 
| 1.5.0 | 73 | 12/27/2013 | 
| 1.4.0 | 71 | 12/26/2013 | 
| 1.3.0 | 72 | 12/24/2013 | 
| 1.2.0 | 74 | 12/24/2013 | 
| 1.1.0 | 75 | 12/23/2013 |