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

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;
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)
{
switch (element.ValueKind)

View File

@ -1,27 +1,18 @@
using System.Text.Json;
using JsonCanonicalizer.BL;
using System.Text.Json;
namespace JsonCanonicalizer
{
class Program
{
static int Main(string[] args)
static int Main(string[] _)
{
try
{
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 writer = new Utf8JsonWriter(outputStream, writerOptions);
BL.Canonicalizer.WriteSorted(writer, doc.RootElement);
writer.Flush();
Canonicalizer.Canonicalize(inputStream, outputStream);
Console.Out.WriteLine();
return 0;