ExtremeJsonEncoders 0.0.5
dotnet add package ExtremeJsonEncoders --version 0.0.5
NuGet\Install-Package ExtremeJsonEncoders -Version 0.0.5
<PackageReference Include="ExtremeJsonEncoders" Version="0.0.5" />
paket add ExtremeJsonEncoders --version 0.0.5
#r "nuget: ExtremeJsonEncoders, 0.0.5"
// Install ExtremeJsonEncoders as a Cake Addin #addin nuget:?package=ExtremeJsonEncoders&version=0.0.5 // Install ExtremeJsonEncoders as a Cake Tool #tool nuget:?package=ExtremeJsonEncoders&version=0.0.5
ExtremeJsonEncoders
For System.Text.Json. A MinimalJsonEncoder, that only escape what the RFC require. Also a MaximalJsonEncoder, for fun:-)
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(JsonSerializer.Serialize("\r\n\t\\abcæøå𠮟る𐐷\""));
// "\r\n\t\\abc\u00E6\u00F8\u00E5\uD842\uDF9F\u308B\uD801\uDC37\u0022"
Console.WriteLine(JsonSerializer.Serialize("\r\n\t\\abcæøå𠮟る𐐷\"", new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }));
// "\r\n\t\\abcæøå\uD842\uDF9Fる\uD801\uDC37\""
Console.WriteLine(JsonSerializer.Serialize("\r\n\t\\abcæøå𠮟る𐐷\"", new JsonSerializerOptions { Encoder = MaximalJsonEncoder.Shared }));
// "\u000D\u000A\u0009\u005C\u0061\u0062\u0063\u00E6\u00F8\u00E5\uD842\uDF9F\u308B\uD801\uDC37\u0022"
Console.WriteLine(JsonSerializer.Serialize("\r\n\t\\abcæøå𠮟る𐐷\"", new JsonSerializerOptions { Encoder = MinimalJsonEncoder.Shared }));
// "\r\n\t\\abcæøå𠮟る𐐷\""
Performance (since 0.0.3): When there is a lot of ascii and little need to escape, MinimalJsonEncoder is comparable to UnsafeRelaxedJsonEscaping. When a lot of non-ascii, MinimalJsonEncoder can use 1/2 the time of UnsafeRelaxedJsonEscaping and 1/3 of the time of default encoder.
References:
- UnsafeRelaxedJsonEscaping escapes too much #86463: https://github.com/dotnet/runtime/issues/86463
- Default JSON escaping is biased against other languages #86805: https://github.com/dotnet/runtime/issues/86805
- [API Proposal]: UnicodeJsonEncoder: https://github.com/dotnet/runtime/issues/87153
- RFC: https://datatracker.ietf.org/doc/html/rfc8259#section-7
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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. |
.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 was computed. 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. |
-
.NETStandard 2.0
- Shim.System.Text.Rune (>= 6.0.2)
- System.Text.Json (>= 6.0.0)
-
net6.0
- System.Text.Json (>= 6.0.0)
-
net8.0
- System.Text.Json (>= 6.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ExtremeJsonEncoders:
Package | Downloads |
---|---|
GoreRemoting.Serialization.Json
Grpc Remoting library for migration from .NET Remoting |
GitHub repositories
This package is not used by any popular GitHub repositories.