ASP.NET Web API和[Serializable]类

Mal*_*ako 12 .net c# asp.net-mvc serializable asp.net-web-api

我有一个标有[Serializable]的类.当我从Web API返回它时,字段名称都很时髦.

通常返回的JSON是

[{"OrderId":797 ...
Run Code Online (Sandbox Code Playgroud)

使用[Serializable]时返回JSON

[{"<OrderId>k__BackingField":797 ...
Run Code Online (Sandbox Code Playgroud)

我不想将其标记为可序列化以使用BinaryFormatter进行缓存.除了编写自定义序列化程序或制作一个不可序列化的双胞胎并编写猴子代码以在两者之间"施放"之外,还有其他方法吗?

You*_*oui 22

你只需要这个单行来让Json.NET再次忽略[Serializable]语义:

((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true;
Run Code Online (Sandbox Code Playgroud)

一个更好的解决方案可能是完全摆脱[Serializable],停止使用BinaryFormatter,并使用不同的序列化程序来做你想要做的任何缓存,例如Json.NET序列化程序.