<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

TraceJsonWriter

using System; using System.Globalization; using System.IO; using System.Numerics; using System.Runtime.CompilerServices; using System; using System.Globalization; using System.IO; using System.Runtime.CompilerServices; namespace Newtonsoft.Json.Serialization { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal class TraceJsonWriter : JsonWriter { private readonly JsonWriter _innerWriter; private readonly JsonTextWriter _textWriter; private readonly StringWriter _sw; public TraceJsonWriter(JsonWriter innerWriter) { _innerWriter = innerWriter; _sw = new StringWriter(CultureInfo.InvariantCulture); _sw.Write("Serialized JSON: " + Environment.NewLine); _textWriter = new JsonTextWriter(_sw); _textWriter.Formatting = Formatting.Indented; _textWriter.Culture = innerWriter.Culture; _textWriter.DateFormatHandling = innerWriter.DateFormatHandling; _textWriter.DateFormatString = innerWriter.DateFormatString; _textWriter.DateTimeZoneHandling = innerWriter.DateTimeZoneHandling; _textWriter.FloatFormatHandling = innerWriter.FloatFormatHandling; } public string GetSerializedJsonMessage() { return _sw.ToString(); } public override void WriteValue(decimal value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(decimal? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(bool value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(bool? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(byte value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(byte? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(char value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(char? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteValue(byte[] value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value == null) base.WriteUndefined(); else base.WriteValue(value); } public override void WriteValue(DateTime value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(DateTime? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(DateTimeOffset value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(DateTimeOffset? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(double value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(double? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteUndefined() { _textWriter.WriteUndefined(); _innerWriter.WriteUndefined(); base.WriteUndefined(); } public override void WriteNull() { _textWriter.WriteNull(); _innerWriter.WriteNull(); base.WriteUndefined(); } public override void WriteValue(float value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(float? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(Guid value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(Guid? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(int value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(int? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(long value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(long? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteValue(object value) { if (value is BigInteger) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); InternalWriteValue(JsonToken.Integer); } else { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value == null) base.WriteUndefined(); else InternalWriteValue(JsonToken.String); } } public override void WriteValue(sbyte value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(sbyte? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(short value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(short? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteValue(string value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(TimeSpan value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(TimeSpan? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(uint value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(uint? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteValue(ulong value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(ulong? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteValue(Uri value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value == (Uri)null) base.WriteUndefined(); else base.WriteValue(value); } public override void WriteValue(ushort value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); base.WriteValue(value); } public override void WriteValue(ushort? value) { _textWriter.WriteValue(value); _innerWriter.WriteValue(value); if (value.HasValue) base.WriteValue(value.GetValueOrDefault()); else base.WriteUndefined(); } public override void WriteWhitespace(string ws) { _textWriter.WriteWhitespace(ws); _innerWriter.WriteWhitespace(ws); base.WriteWhitespace(ws); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteComment(string text) { _textWriter.WriteComment(text); _innerWriter.WriteComment(text); base.WriteComment(text); } public override void WriteStartArray() { _textWriter.WriteStartArray(); _innerWriter.WriteStartArray(); base.WriteStartArray(); } public override void WriteEndArray() { _textWriter.WriteEndArray(); _innerWriter.WriteEndArray(); base.WriteEndArray(); } public override void WriteStartConstructor(string name) { _textWriter.WriteStartConstructor(name); _innerWriter.WriteStartConstructor(name); base.WriteStartConstructor(name); } public override void WriteEndConstructor() { _textWriter.WriteEndConstructor(); _innerWriter.WriteEndConstructor(); base.WriteEndConstructor(); } public override void WritePropertyName(string name) { _textWriter.WritePropertyName(name); _innerWriter.WritePropertyName(name); base.WritePropertyName(name); } public override void WritePropertyName(string name, bool escape) { _textWriter.WritePropertyName(name, escape); _innerWriter.WritePropertyName(name, escape); base.WritePropertyName(name); } public override void WriteStartObject() { _textWriter.WriteStartObject(); _innerWriter.WriteStartObject(); base.WriteStartObject(); } public override void WriteEndObject() { _textWriter.WriteEndObject(); _innerWriter.WriteEndObject(); base.WriteEndObject(); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteRawValue(string json) { _textWriter.WriteRawValue(json); _innerWriter.WriteRawValue(json); InternalWriteValue(JsonToken.Undefined); } [System.Runtime.CompilerServices.NullableContext(2)] public override void WriteRaw(string json) { _textWriter.WriteRaw(json); _innerWriter.WriteRaw(json); base.WriteRaw(json); } public override void Close() { _textWriter.Close(); _innerWriter.Close(); base.Close(); } public override void Flush() { _textWriter.Flush(); _innerWriter.Flush(); } } } namespace Newtonsoft.Json.Serialization { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal class TraceJsonReader : JsonReader, IJsonLineInfo { private readonly JsonReader _innerReader = innerReader; private readonly JsonTextWriter _textWriter; private readonly StringWriter _sw = new StringWriter(CultureInfo.InvariantCulture); public override int Depth => _innerReader.Depth; public override string Path => _innerReader.Path; public override char QuoteChar { get { return _innerReader.QuoteChar; } protected internal set { _innerReader.QuoteChar = value; } } public override JsonToken TokenType => _innerReader.TokenType; [System.Runtime.CompilerServices.Nullable(2)] public override object Value { [System.Runtime.CompilerServices.NullableContext(2)] get { return _innerReader.Value; } } [System.Runtime.CompilerServices.Nullable(2)] public override Type ValueType { [System.Runtime.CompilerServices.NullableContext(2)] get { return _innerReader.ValueType; } } int IJsonLineInfo.LineNumber { get { return (_innerReader as IJsonLineInfo)?.LineNumber ?? 0; } } int IJsonLineInfo.LinePosition { get { return (_innerReader as IJsonLineInfo)?.LinePosition ?? 0; } } public TraceJsonReader(JsonReader innerReader) { _sw.Write("Deserialized JSON: " + Environment.NewLine); _textWriter = new JsonTextWriter(_sw); _textWriter.Formatting = Formatting.Indented; } public string GetDeserializedJsonMessage() { return _sw.ToString(); } public override bool Read() { bool result = _innerReader.Read(); WriteCurrentToken(); bool result; return result; } public override int? ReadAsInt32() { int? result = _innerReader.ReadAsInt32(); WriteCurrentToken(); int? result; return result; } [System.Runtime.CompilerServices.NullableContext(2)] public override string ReadAsString() { string result = _innerReader.ReadAsString(); WriteCurrentToken(); string result; return result; } [System.Runtime.CompilerServices.NullableContext(2)] public override byte[] ReadAsBytes() { byte[] result = _innerReader.ReadAsBytes(); WriteCurrentToken(); byte[] result; return result; } public override decimal? ReadAsDecimal() { decimal? result = _innerReader.ReadAsDecimal(); WriteCurrentToken(); decimal? result; return result; } public override double? ReadAsDouble() { double? result = _innerReader.ReadAsDouble(); WriteCurrentToken(); double? result; return result; } public override bool? ReadAsBoolean() { bool? result = _innerReader.ReadAsBoolean(); WriteCurrentToken(); bool? result; return result; } public override DateTime? ReadAsDateTime() { DateTime? result = _innerReader.ReadAsDateTime(); WriteCurrentToken(); DateTime? result; return result; } public override DateTimeOffset? ReadAsDateTimeOffset() { DateTimeOffset? result = _innerReader.ReadAsDateTimeOffset(); WriteCurrentToken(); DateTimeOffset? result; return result; } public void WriteCurrentToken() { _textWriter.WriteToken(_innerReader, false, false, true); } public override void Close() { _innerReader.Close(); } bool IJsonLineInfo.HasLineInfo() { return (_innerReader as IJsonLineInfo)?.HasLineInfo() ?? false; } } }