Как вывести объект в консоль после десериализации в C#. Я получил ответ от запроса GET, деcериализовал его с помощью библиотеки Newtonsoft и хочу как то проверить результат, вот думаю вывести в консоль только не знаю как. Или может есть другие способы проверить. В Visual Studio можно было прямо в ide раскрыть объект. Но я использую rider и не знаю есть ли там альтернатива этому.
using System;
using System.IO;
using System.Net;
using QuickDeser;
namespace ConsoleApplication2
{
internal class Program
{
public static void Main(string[] args)
{
WebRequest request = WebRequest.Create("https://opensky-network.org/api/states/all?lamin=51.421812&lomin=23.139124&lamax=55.961184&lomax=33.472494");
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
string line = "";
// Console.WriteLine(Welcome.FromJson(line));
var welcome = Welcome.FromJson(line);
Console.WriteLine(welcome);
}
}
response.Close();
Console.WriteLine("Запрос выполнен");
Console.Read();
}
}
}
<code lang="cs">
_________________________________________________________________________
это классы для десcериализации брал с сервиса quicktype
<code lang="cs">
namespace QuickDeser
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class Welcome
{
[JsonProperty("time")] public long Time { get; set; }
[JsonProperty("states")] public List<List<State>> States { get; set; }
}
public partial struct State
{
public bool? Bool;
public double? Double;
public string String;
public static implicit operator State(bool Bool) => new State {Bool = Bool};
public static implicit operator State(double Double) => new State {Double = Double};
public static implicit operator State(string String) => new State {String = String};
public bool IsNull => Bool == null && Double == null && String == null;
}
public partial class Welcome
{
public static Welcome FromJson(string json) =>
JsonConvert.DeserializeObject<Welcome>(json, QuickDeser.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Welcome self) =>
JsonConvert.SerializeObject(self, QuickDeser.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
StateConverter.Singleton,
new IsoDateTimeConverter {DateTimeStyles = DateTimeStyles.AssumeUniversal}
},
};
}
internal class StateConverter : JsonConverter
{
public override bool CanConvert(Type t) => t == typeof(State) || t == typeof(State?);
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
{
switch (reader.TokenType)
{
case JsonToken.Null:
return new State { };
case JsonToken.Integer:
case JsonToken.Float:
var doubleValue = serializer.Deserialize<double>(reader);
return new State {Double = doubleValue};
case JsonToken.Boolean:
var boolValue = serializer.Deserialize<bool>(reader);
return new State {Bool = boolValue};
case JsonToken.String:
case JsonToken.Date:
var stringValue = serializer.Deserialize<string>(reader);
return new State {String = stringValue};
}
throw new Exception("Cannot unmarshal type State");
}
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
{
var value = (State) untypedValue;
if (value.IsNull)
{
serializer.Serialize(writer, null);
return;
}
if (value.Double != null)
{
serializer.Serialize(writer, value.Double.Value);
return;
}
if (value.Bool != null)
{
serializer.Serialize(writer, value.Bool.Value);
return;
}
if (value.String != null)
{
serializer.Serialize(writer, value.String);
return;
}
throw new Exception("Cannot marshal type State");
}
public static readonly StateConverter Singleton = new StateConverter();
}
}
</code>