1. Don't use ResponseFormat, it is completely ignored in web api. Format is determined based on content negotiation (conneg)
2. We have a custom type called JsonValue which is a dynamic. You can use it for json. You basically put JsonValue on the signature of your methods. If you look in our Preview 4 samples you will see a JsonValue Sample that shows how to use this. JsonValue
is not working in our latest code in our repo yet, but we will be updating it to work shortly. You can check out Preview 4 to see play with it now though.
3. You can also author a custom MediaTypeFormatter to handle JObject from JSON.NET or Expando. To do that you will write a custom formatter and register it using the configuration class. The formatter has CanReadAsType and CanWriteAsType methods, you'll
want to set those to true if the type is JObject or ExpandoObject. You can see an example of how to do this in the
JsonValueMediaTypeFormatter in Preview 4. You will need to insert your formatter at the beginning of the list. In our latest preview you can do this by using the Insert method on the Formatters collection off of the config object.