我在. NET 6中使用System.Text.Json
,我有一些数据类的属性用JsonPropertyName
注解,以便能够与另一个API通信,但现在我需要使用原始属性名称,因为另一个商业原因,我正在寻找一种方法,使序列化程序忽略这些注解,并使用实际的属性名称。我发现在Newtonsoft中,我可以使用ContractResolver
来完成建议的here,但我在System.Text.Json
中找不到替代品。现在我正在考虑使用DTO来实现这一点,但我正在寻找一个更简单的解决方案,如果它可用。
这里有一个简单的例子,假设我们有这个Account
类:
public class Account {
[JsonPropertyName("fname")]
public string FirstName { get; set; }
[JsonPropertyName("lname")]
public string LastName { get; set; }
[JsonPropertyName("years_old")]
public int Age {get; set; }
}
在一个使用中,我希望发送的响应格式如下:
{
"fname": "John",
"lname": "Doe",
"years_old": 25
}
在另一个答案中,我需要:
{
"firstname": "John",
"lastname": "Doe",
"age": 25
}
现在这只是一个示例,但是我的实际类有很多属性,并且不是为每个用例制作DTO是太多的工作。因此,为什么我正在寻找一个解决方案,使用像Newtonsoft DefaultContractResolver
,但使用System.Text.Json
。
PS:我不能再搬回Newtonsoft.Json了。
1条答案
按热度按时间olmpazwi1#
如果你不想使用Map器和dto,我认为唯一的方法(我认为这是更有效的)
或者如果你的类很小,你可以删除字符串生成器,把所有代码放在一行中。
我想您的API应该返回内容,因为您已经创建了一个json字符串