-
-
Save shimat/c24fc0f7fe0f26487dfa2b95422c5c51 to your computer and use it in GitHub Desktop.
CustomJsonSerializer for OpenSearch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Text.Json; | |
using System.Text.Json.Serialization; | |
using OpenSearch.Net; | |
public class CustomJsonSerializer : IOpenSearchSerializer | |
{ | |
private static readonly JsonSerializerOptions deserializationOptions = new() | |
{ | |
NumberHandling = JsonNumberHandling.AllowReadingFromString | |
}; | |
/// <inheritdoc/> | |
public T? Deserialize<T>(Stream stream) | |
=> JsonSerializer.Deserialize<T>(stream, deserializationOptions); | |
/// <inheritdoc/> | |
public object? Deserialize(Type type, Stream stream) | |
=> JsonSerializer.Deserialize(stream, type, deserializationOptions); | |
/// <inheritdoc/> | |
public async Task<T?> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default) | |
=> await JsonSerializer.DeserializeAsync<T>(stream, deserializationOptions, cancellationToken); | |
/// <inheritdoc/> | |
public async Task<object?> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default) | |
=> await JsonSerializer.DeserializeAsync(stream, type, deserializationOptions, cancellationToken); | |
/// <inheritdoc/> | |
public void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None) | |
=> JsonSerializer.Serialize(stream, data, new JsonSerializerOptions{WriteIndented = (formatting == SerializationFormatting.Indented) }); | |
/// <inheritdoc/> | |
public Task SerializeAsync<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None, CancellationToken cancellationToken = default) | |
=> JsonSerializer.SerializeAsync(stream, data, new JsonSerializerOptions { WriteIndented = (formatting == SerializationFormatting.Indented) }, cancellationToken); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment