Я пишу специальный конвертер json, который сериализует объект и маскирует определенные поля, содержащие некоторую конфиденциальную информацию.Я создал конвертер, но когда я сериализую объект, используя мой конвертер, я получаю пустую строку.Может кто-нибудь сказать мне, что я делаю неправильно?
public class Student
{
public string Name { get; set; }
public string Phone { get; set; }
}
class StudentJsonConverter : JsonConverter
{
/// <inheritdoc />
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is Student student)
{
student.Phone = MaskString(student.Phone);
}
writer.WriteStartObject();
serializer.Serialize(writer, value);
writer.WriteEndObject();
}
/// <inheritdoc />
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
/// <inheritdoc />
public override bool CanConvert(Type objectType) => typeof(Student) == objectType;
private static string MaskString(string sensitiveInformation) => string.IsNullOrWhiteSpace(sensitiveInformation) ? null : new string('*', sensitiveInformation.Length);
}
И здесь я использую это:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new StudentJsonConverter());
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
var student = new Student { Name = "name", Phone = "1234" };
var serializedString = JsonConvert.SerializeObject(student, settings);
Console.WriteLine(serializedString);
Но я всегда получаю пустую строку.