mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-04-28 17:11:14 +00:00
refactor: Migrated from Newtonsoft.Json to System.Text.Json, missing one test passing
This commit is contained in:
@@ -1,54 +1,45 @@
|
||||
namespace ElectronNET.Converter;
|
||||
|
||||
using ElectronNET.API.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ElectronNET.API.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ModifierTypeListConverter : JsonConverter<List<ModifierType>>
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="reader"></param>
|
||||
/// <param name="objectType"></param>
|
||||
/// <param name="existingValue"></param>
|
||||
/// <param name="hasExistingValue"></param>
|
||||
/// <param name="serializer"></param>
|
||||
/// <returns></returns>
|
||||
public override List<ModifierType> ReadJson(JsonReader reader, Type objectType, List<ModifierType> existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
public override List<ModifierType> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
var token = JToken.Load(reader);
|
||||
|
||||
if (token.Type == JTokenType.Null)
|
||||
if (reader.TokenType == JsonTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
return token.ToObject<List<string>>().Select(m => (ModifierType)Enum.Parse(typeof(ModifierType), m)).ToList();
|
||||
var list = new List<ModifierType>();
|
||||
if (reader.TokenType != JsonTokenType.StartArray)
|
||||
{
|
||||
throw new JsonException("Expected array for ModifierType list");
|
||||
}
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.EndArray) break;
|
||||
if (reader.TokenType != JsonTokenType.String) throw new JsonException("Expected string enum value");
|
||||
var s = reader.GetString();
|
||||
list.Add((ModifierType)Enum.Parse(typeof(ModifierType), s, ignoreCase: true));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="writer"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="serializer"></param>
|
||||
public override void WriteJson(JsonWriter writer, List<ModifierType> value, JsonSerializer serializer)
|
||||
public override void Write(Utf8JsonWriter writer, List<ModifierType> value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStartArray();
|
||||
|
||||
foreach (var modifier in value)
|
||||
{
|
||||
writer.WriteValue(modifier.ToString());
|
||||
writer.WriteStringValue(modifier.ToString());
|
||||
}
|
||||
|
||||
writer.WriteEndArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,43 +1,47 @@
|
||||
using ElectronNET.API.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using ElectronNET.API.Entities;
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace ElectronNET.Converter;
|
||||
|
||||
public class PageSizeConverter : JsonConverter<PageSize>
|
||||
{
|
||||
public override PageSize ReadJson(JsonReader reader, Type objectType, PageSize existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
public override PageSize Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.String)
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
return (string)reader.Value;
|
||||
return (string)reader.GetString();
|
||||
}
|
||||
else if (reader.TokenType == JsonToken.StartObject)
|
||||
else if (reader.TokenType == JsonTokenType.StartObject)
|
||||
{
|
||||
return serializer.Deserialize<PageSize>(reader);
|
||||
using var doc = JsonDocument.ParseValue(ref reader);
|
||||
return doc.RootElement.Deserialize<PageSize>(API.Serialization.ElectronJson.Options);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new JsonSerializationException("Invalid value for PageSize. Expected true, false, or an object.");
|
||||
throw new JsonException("Invalid value for PageSize. Expected string or an object.");
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, PageSize value, JsonSerializer serializer)
|
||||
public override void Write(Utf8JsonWriter writer, PageSize value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value is null)
|
||||
{
|
||||
writer.WriteUndefined();
|
||||
writer.WriteNullValue();
|
||||
return;
|
||||
}
|
||||
|
||||
var str = (string)value;
|
||||
|
||||
if (str is not null)
|
||||
{
|
||||
writer.WriteValue(str);
|
||||
writer.WriteStringValue(str);
|
||||
}
|
||||
else
|
||||
{
|
||||
serializer.Serialize(writer, value);
|
||||
JsonSerializer.Serialize(writer, value, API.Serialization.ElectronJson.Options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,43 +1,46 @@
|
||||
using ElectronNET.API.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using ElectronNET.API.Entities;
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace ElectronNET.Converter;
|
||||
|
||||
public class TitleBarOverlayConverter : JsonConverter<TitleBarOverlay>
|
||||
{
|
||||
public override TitleBarOverlay ReadJson(JsonReader reader, Type objectType, TitleBarOverlay existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
public override TitleBarOverlay Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.Boolean)
|
||||
if (reader.TokenType == JsonTokenType.True || reader.TokenType == JsonTokenType.False)
|
||||
{
|
||||
return (bool)reader.Value;
|
||||
return (bool)reader.GetBoolean();
|
||||
}
|
||||
else if (reader.TokenType == JsonToken.StartObject)
|
||||
else if (reader.TokenType == JsonTokenType.StartObject)
|
||||
{
|
||||
return serializer.Deserialize<TitleBarOverlay>(reader);
|
||||
using var doc = JsonDocument.ParseValue(ref reader);
|
||||
return doc.RootElement.Deserialize<TitleBarOverlay>(API.Serialization.ElectronJson.Options);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new JsonSerializationException("Invalid value for TitleBarOverlay. Expected true, false, or an object.");
|
||||
throw new JsonException("Invalid value for TitleBarOverlay. Expected boolean or an object.");
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, TitleBarOverlay value, JsonSerializer serializer)
|
||||
public override void Write(Utf8JsonWriter writer, TitleBarOverlay value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value is null)
|
||||
{
|
||||
writer.WriteUndefined();
|
||||
writer.WriteNullValue();
|
||||
return;
|
||||
}
|
||||
|
||||
var @bool = (bool?)value;
|
||||
if (@bool.HasValue)
|
||||
{
|
||||
writer.WriteValue(@bool.Value);
|
||||
writer.WriteBooleanValue(@bool.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
serializer.Serialize(writer, value);
|
||||
JsonSerializer.Serialize(writer, value, API.Serialization.ElectronJson.Options);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user