mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-31 01:35:50 +02:00
Merge pull request #5382 from crobibero/json-version-converter
This commit is contained in:
commit
db2d1bca33
23
MediaBrowser.Common/Json/Converters/JsonVersionConverter.cs
Normal file
23
MediaBrowser.Common/Json/Converters/JsonVersionConverter.cs
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Common.Json.Converters
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Converts a Version object or value to/from JSON.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Required to send <see cref="Version"/> as a string instead of an object.
|
||||||
|
/// </remarks>
|
||||||
|
public class JsonVersionConverter : JsonConverter<Version>
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override Version Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||||
|
=> new Version(reader.GetString());
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void Write(Utf8JsonWriter writer, Version value, JsonSerializerOptions options)
|
||||||
|
=> writer.WriteStringValue(value.ToString());
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,6 +35,7 @@ namespace MediaBrowser.Common.Json
|
||||||
{
|
{
|
||||||
new JsonGuidConverter(),
|
new JsonGuidConverter(),
|
||||||
new JsonNullableGuidConverter(),
|
new JsonNullableGuidConverter(),
|
||||||
|
new JsonVersionConverter(),
|
||||||
new JsonStringEnumConverter(),
|
new JsonStringEnumConverter(),
|
||||||
new JsonNullableStructConverterFactory(),
|
new JsonNullableStructConverterFactory(),
|
||||||
new JsonBoolNumberConverter(),
|
new JsonBoolNumberConverter(),
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System;
|
||||||
|
using System.Text.Json;
|
||||||
|
using MediaBrowser.Common.Json.Converters;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Jellyfin.Common.Tests.Json
|
||||||
|
{
|
||||||
|
public class JsonVersionConverterTests
|
||||||
|
{
|
||||||
|
private readonly JsonSerializerOptions _options;
|
||||||
|
|
||||||
|
public JsonVersionConverterTests()
|
||||||
|
{
|
||||||
|
_options = new JsonSerializerOptions();
|
||||||
|
_options.Converters.Add(new JsonVersionConverter());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Deserialize_Version_Success()
|
||||||
|
{
|
||||||
|
var input = "\"1.025.222\"";
|
||||||
|
var output = new Version(1, 25, 222);
|
||||||
|
var deserializedInput = JsonSerializer.Deserialize<Version>(input, _options);
|
||||||
|
Assert.Equal(output, deserializedInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Serialize_Version_Success()
|
||||||
|
{
|
||||||
|
var input = new Version(1, 09, 59);
|
||||||
|
var output = "\"1.9.59\"";
|
||||||
|
var serializedInput = JsonSerializer.Serialize(input, _options);
|
||||||
|
Assert.Equal(output, serializedInput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue