14

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

通常返回的 JSON 是

[{"OrderId":797 ...

使用 [Serializable] 时返回的 JSON

[{"<OrderId>k__BackingField":797 ...

我不想将其标记为可序列化以使用 BinaryFormatter 进行缓存。除了编写自定义序列化程序或制作不可序列化的孪生类并编写猴子代码以在两者之间“转换”之外,还有其他方法吗?

4

1 回答 1

26

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

((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true;

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

于 2012-11-07T20:57:50.503 回答