I have a class that is marked with [Serializable]. When i return it from the Web API the field names are all funky.
Normally the JSON returned is
[{\
You just need this one-liner to get Json.NET to ignore the [Serializable] semantics again:
((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true;
A better solution for you might be to get rid of [Serializable] altogether, stop using BinaryFormatter, and use a different serializer instead to do whatever caching you want to do, like the Json.NET serializer for example.