JSON.NET & controlling the type information provided in the output stream
See the question and my original answer on StackOverflowI think you should take a look at JSON.NET "Contract Resolvers". I quote:
The IContractResolver interface provides a way to customize how the JsonSerializer serializes and deserializes .NET objects to JSON.
Implementing the IContractResolver interface and then assigning an instance to a JsonSerializer lets you control whether the object is serialized as a JSON object or JSON array, what object members should be serialized, how they are serialized and what they are called.