JsonConverter

Common interface for Json Converters (Newtonsoft.Json, System.Text.Json, SimpleJson and more)

MIT License

Stars
5
Committers
1

JsonConverter

Common interface + implementation for Json Converters:

NuGets

Name Version
JsonConverter.Abstractions NuGet Badge
JsonConverter.Newtonsoft.Json NuGet Badge
JsonConverter.System.Text.Json NuGet Badge
JsonConverter.SimpleJson NuGet Badge
JsonConverter.NetJSON NuGet Badge
JsonConverter.Utf8Json NuGet Badge
JsonConverter.XUtf8Json NuGet Badge
JsonConverter.ServiceStack.Text NuGet Badge
JsonConverter.Argon NuGet Badge

Interfaces

IJsonConverter

public interface IJsonConverter
{
    Task<T?> DeserializeAsync<T>(Stream stream, IJsonConverterOptions? options = null, CancellationToken cancellationToken = default);

    T? Deserialize<T>(Stream stream, IJsonConverterOptions? options = null);

    T? Deserialize<T>(string text, IJsonConverterOptions? options = null);

    object? Deserialize(string text, Type type, JsonConverterOptions? options = null);

    Task<string> SerializeAsync(object source, IJsonConverterOptions? options = null, CancellationToken cancellationToken = default);

    string Serialize(object source, IJsonConverterOptions? options = null);

    Task SerializeAsync(Stream stream, object value, JsonConverterOptions? options = null, CancellationToken cancellationToken = default);

    Task<bool> IsValidJsonAsync(Stream stream, CancellationToken cancellationToken = default);

    Task<bool> IsValidJsonAsync(string input, CancellationToken cancellationToken = default);

    bool IsValidJson(Stream stream);

    bool IsValidJson(string input);

    /// <summary>
    /// Convert an object to a DynamicJsonClass or DynamicJsonClass-array. 
    /// </summary>.
    /// <param name="value">The object (e.g. JObject in case of Newtonsoft.Json).</param>
    /// <param name="options">The <see cref="DynamicJsonClassOptions"/> (optional).</param>
    /// <returns>object, DynamicJsonClass or DynamicJsonClass-array</returns>
    object? ConvertToDynamicJsonClass(object value, DynamicJsonClassOptions? options = null);

    /// <summary>
    /// Convert Json Text to a DynamicJsonClass or DynamicJsonClass-array. 
    /// </summary>.
    /// <param name="text">The Json Text.</param>
    /// <param name="options">The <see cref="DynamicJsonClassOptions"/> (optional).</param>
    /// <returns>object, DynamicJsonClass or DynamicJsonClass-array</returns>
    object? DeserializeToDynamicJsonClass(string text, DynamicJsonClassOptions? options = null);

JsonConverterOptions

public class JsonConverterOptions
{
    public bool PropertyNameCaseInsensitive { get; set; }

    public bool WriteIndented { get; set; }

    public bool IgnoreNullValues { get; set; }
}

JsonConverterOptions

public class DynamicJsonClassOptions
{
    public JsonConverterOptions? JsonConverterOptions { get; set; }

    public IntegerBehavior IntegerConvertBehavior { get; set; } = IntegerBehavior.UseLong;

    public FloatBehavior FloatConvertBehavior { get; set; } = FloatBehavior.UseDouble;
}