Skip to content

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

License

Notifications You must be signed in to change notification settings

StefH/JsonConverter

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks