c# - 更改 Swagger 属性名称
问题描述
Q. 1 我正在尝试将实体推入 CRM。json 看起来像这样:
{
"sub_AssignedToCompanyId@odata.bind": "/accounts(f52f9dd7-35e5-e711-813b-480fcff40721)"
}
现在,我的 C# 类上有一个名为 AssignedToCompany 的属性,如下所示:
[JsonProperty(PropertyName = "sub_AssignedToCompanyId@odata.bind")]
public int AssignedToCompany{ get; set; }
我想要的是一种将它序列化为 sub_AssignedToCompanyId@odata.bind 的方法(我已经使用 JsonProperty("sub_AssignedToCompanyId@odata.bind") 完成了。但是那么招摇定义看起来不太好。我想要招摇定义这个属性说“assignedToCompanyId”。有没有办法做到这一点?我正在使用.Net Framework Web API。
Q.2 而且,有没有办法可以翻译这个输入:f52f9dd7-35e5-e711-813b-480fcff40721
对此输出:/accounts(f52f9dd7-35e5-e711-813b-480fcff40721)
在序列化过程中自动?
解决方案
您可以使用IOperationFilter
或。哪个最适合您的需求。ISchemaFilter
IDocumentFilter
一个例子ISchemaFilter
可以是:
public class ODataTypeSchemaFilter : ISchemaFilter
{
private const string propToRename = "sub_AssignedToCompanyId@odata.bind";
public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type, type)
{
if (type == typeof(MyObject))
{
// adding new schema property, and removing the old one
schema.properties.Add(nameof(MyObject.AssignedToCompany), schema.properties[propToRename]);
schema.properties.Remove(propToRename);
}
}
}
public class MyObject
{
[JsonProperty(PropertyName = "sub_AssignedToCompanyId@odata.bind")]
public int AssignedToCompany { get; set; }
}
这是一个强大的功能,如果操作不当,更改架构可能会导致其他问题。有关更多信息,请参阅 Swagger 文档。根据我的经验,我已经使用了所有这三个,只需找到最适合您需求的。
推荐阅读
- java - 如何在java中通过反射调用setter方法
- sharepoint-online - 如何使用 SharePoint JSOM 枚举所有文档集文件属性
- arrays - Android:解析 JSON 数组
- postgresql - 如何在 Postgresql 中打开 SQLite DB
- swift - 在使用 ChildautoID 指定的 Firebase (Swift) 中删除节点
- java - 将前 3 个字符串与每个字符串的前 3 个字符的字符串列表进行比较
- reactjs - Reactjs could not alert data when button is Clicked
- python - 如何操作 JSON 文件中的键值对?
- python - 如何添加进度条并从日志文件中的一行更新它?
- swift - 如何在单元格之间获得更均匀的垂直距离?