refactor: Migrated from Newtonsoft.Json to System.Text.Json, missing one test passing

This commit is contained in:
Denny09310
2025-11-09 12:05:07 +01:00
parent fc69598b09
commit 71ced8db56
80 changed files with 720 additions and 878 deletions

View File

@@ -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();
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}
}