Simplifies json reading/writing by adding some extensions methods

Example of usage:
public class JsonConverter : JsonConverter<Line>
{

    public override Line? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if(typeToConvert != typeof(Line))
            throw new ArgumentException($"Invalid type ({typeToConvert}).", nameof(typeToConvert));
        
        if(reader.TokenType == JsonTokenType.Null)
            return null;

        Line line = new();

        reader.ReadObjectProperties((ref reader, propertyName) =>           <--------
        {
            if(propertyName.SequenceEqual("Keys"u8))                        <--------
            {
                reader.ReadArray((ref reader, index) =>                         <--------
                {
                    line.Add(reader.getByte());
                });
            }
        }
        
        return line;
    }
}


All Features:
  • JsonReadException
  • Utf8JsonReader extensions
    • void AssertToken(JsonTokenType tokenType)
    • JsonTokenType ReadOrThrow()
    • JsonTokenType ReadTokenOrThrow(params IEnumerable<JsonTokenType> allowedTokenTypes)
    • byte ReadByte()
    • short ReadInt16()
    • int ReadInt32()
    • long ReadInt64()
    • sbyte ReadSByte()
    • ushort ReadUInt16()
    • uint ReadUInt32()
    • ulong ReadUInt64()
    • float ReadSingle()
    • double ReadDouble()
    • decimal ReadDecimal()
    • bool ReadBoolean()
    • DateTime ReadDateTime()
    • DateTimeOffset ReadDateTimeOffset()
    • Guid ReadGuid()
    • string? ReadString()
    • void ReadObjectProperties(ReadPropertyDelegate readPropertyAction)
    • void ReadObject(ReadPropertyDelegate readPropertyAction)
    • void ReadArrayEntries(ReadArrayEntryDelegate readArrayEntryAction)
    • void ReadArray(ReadArrayEntryDelegate readArrayEntryAction)