我在ASP.NET webapi项目中使用Swashbuckle 5并使用所有默认设置。它序列化我的方法的输出,以显示回复的模式。我收到的文档看起来像这样:
Response Class (Status 200)
Model Model Schema
[
{
"<Key>k__BackingField": "string",
"<Value>k__BackingField": "string",
"<Id>k__BackingField": 0
}
]
这是通过遵循C#代码
生成的 /// <summary>
/// Fetches all system configuration items
/// </summary>
/// <returns>List of <see cref="SystemConfigurationDto" /> items</returns>
public IList<SystemConfigurationDto> GetAllSystemConfigurationItems()
{
var result = CommandProcessor.ProcessCommand(new SystemConfigurationQueryCommand()) as SystemConfigurationQueryCommandResponse;
return result.Results.ToList();
}
其中result.Results基本上是一个标准的对象列表,每个对象都包含这些键/值/ id字段。我在这里阅读https://conficient.wordpress.com/2014/05/22/getting-rid-of-k__backingfield-in-serialization/ [serializable]属性可能会影响这一点,但如果可能的话,我不愿意删除该属性。是否有任何配方来调整此序列化工件?
答案 0 :(得分:23)
将此添加到WebApiConfig.cs
:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
new DefaultContractResolver { IgnoreSerializableAttribute = true };
这解决了标有[Serializable]
的类的问题。即使没有类具有该属性,我也有间歇性问题,因此我现在总是使用此设置。