Определите модель без атрибута JsonPropertyNameAttribute
public class X
{
public string Name { get; set; }
}
Создайте политику сокращения
public class DeserializePolicy : JsonNamingPolicy
{
public override string ConvertName(string name)
=> name == "Name" ? "uid" : name;
}
Используйте ее для десериализации
string text = "{\"uid\":\"abc\"}";
var options = new JsonSerializerOptions { PropertyNamingPolicy = new DeserializePolicy() };
var x = JsonSerializer.Deserialize<X>(text, options);
Сериализовать без политики
var json = JsonSerializer.Serialize<X>(x);
Не уверен, что это можно считать изящным.