Работа с потоками внесена в бизнес-логику

This commit is contained in:
Гершман Антон Лейбович 2026-08-03 12:25:05 +03:00
parent 73a35255af
commit d58147a9b2
2 changed files with 21 additions and 15 deletions

View File

@ -1,10 +1,25 @@
using System.Runtime.Serialization; using System.Text.Json;
using System.Text.Json;
namespace JsonCanonicalizer.BL; namespace JsonCanonicalizer.BL;
public class Canonicalizer public class Canonicalizer
{ {
public static void Canonicalize(Stream from, Stream to)
{
using var doc = JsonDocument.Parse(from);
var writerOptions = new JsonWriterOptions
{
Indented = true,
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
};
using var writer = new Utf8JsonWriter(to, writerOptions);
WriteSorted(writer, doc.RootElement);
writer.Flush();
}
public static void WriteSorted(Utf8JsonWriter writer, JsonElement element) public static void WriteSorted(Utf8JsonWriter writer, JsonElement element)
{ {
switch (element.ValueKind) switch (element.ValueKind)

View File

@ -1,27 +1,18 @@
using System.Text.Json; using JsonCanonicalizer.BL;
using System.Text.Json;
namespace JsonCanonicalizer namespace JsonCanonicalizer
{ {
class Program class Program
{ {
static int Main(string[] args) static int Main(string[] _)
{ {
try try
{ {
using var inputStream = Console.OpenStandardInput(); using var inputStream = Console.OpenStandardInput();
using var doc = JsonDocument.Parse(inputStream);
var writerOptions = new JsonWriterOptions
{
Indented = true,
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
};
using var outputStream = Console.OpenStandardOutput(); using var outputStream = Console.OpenStandardOutput();
using var writer = new Utf8JsonWriter(outputStream, writerOptions);
BL.Canonicalizer.WriteSorted(writer, doc.RootElement); Canonicalizer.Canonicalize(inputStream, outputStream);
writer.Flush();
Console.Out.WriteLine(); Console.Out.WriteLine();
return 0; return 0;