34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
using System.Text.Json;
|
||
using System.Text.Json.Serialization;
|
||
|
||
namespace YandexMusic.API.Converters;
|
||
|
||
public class IntToStringConverter : JsonConverter<string>
|
||
{
|
||
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||
{
|
||
if (reader.TokenType == JsonTokenType.Number)
|
||
{
|
||
// Пытаемся извлечь число как int или long
|
||
if (reader.TryGetInt32(out int intValue))
|
||
return intValue.ToString();
|
||
if (reader.TryGetInt64(out long longValue))
|
||
return longValue.ToString();
|
||
}
|
||
else if (reader.TokenType == JsonTokenType.String)
|
||
{
|
||
return reader.GetString();
|
||
}
|
||
else if (reader.TokenType == JsonTokenType.Null)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
throw new JsonException($"Не удалось преобразовать {reader.TokenType} в строку.");
|
||
}
|
||
|
||
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
|
||
{
|
||
writer.WriteStringValue(value);
|
||
}
|
||
} |