A key part of Content Negotiation is that our default XML and JSON serializers need compatible behavior.
Not doing this means that user code (or serializers) may crash depending on the accept/response headers on the request message. Eg, I build and test my WebAPI using JSON, and then start crashing when clients request XML.
Since the formatters here are two totally separate serializers (JSON.Net and DCS), it's not surprising they have different behavior regarding things like anonymous types, derived properties, etc.
We have a bunch of incompatibilities.
I checked in a test that excercises these. There are a bunch of failing tests (have the Skip attribute). See test\System.Net.Http.Formatting.Test.Unit\Formatting\SerializerConsistencyTests.cs
And this changelist:
The bug here is to fix the failing tests (and ideally expand the test coverage to find other issues).