Converters
Converters - список
JsonConverter.
Добавляют свой преобразователь и подключают
его к
Serialize
и
Deserialize.
Синтаксис
options.Converters.Add(new MyIntConverter());
Пример
Давайте добавить преобразователь в список:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
class MyIntConverter : JsonConverter<int>
{
public override int Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options)
{
return 1;
}
public override void Write(
Utf8JsonWriter writer,
int value,
JsonSerializerOptions options)
{
writer.WriteStringValue("abcde");
}
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions();
options.Converters.Add(new MyIntConverter());
int res = options.Converters.Count;
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте сериализовать число через преобразователь:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
class MyIntConverter : JsonConverter<int>
{
public override int Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options)
{
return 1;
}
public override void Write(
Utf8JsonWriter writer,
int value,
JsonSerializerOptions options)
{
writer.WriteStringValue("abcde");
}
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions();
options.Converters.Add(new MyIntConverter());
string res = JsonSerializer.Serialize(1, options);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте разобрать строку обратно в число:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
class MyIntConverter : JsonConverter<int>
{
public override int Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options)
{
return 1;
}
public override void Write(
Utf8JsonWriter writer,
int value,
JsonSerializerOptions options)
{
writer.WriteStringValue("abcde");
}
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions();
options.Converters.Add(new MyIntConverter());
int res = JsonSerializer.Deserialize<int>("\"abcde\"", options);
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Смотрите также
-
JsonConverter,
базовый класс -
JsonSerializerOptions,
объект настроек -
Serialize,
запись JSON -
Deserialize,
разбор JSON