 <p><strong>disclaimer</strong> I dont' recommend you expose <code>object</code> on a WCF endpoint; altho this appears 'flexible' this is not a good idea as you have not specified what sort of information will be served by your service.</p> <p><em>and now for an answer</em></p> <p>If your WCF call is being consumed by an ajax call and as you put it <code>Javascript client just doesn't care.</code> then why not make your WCF call simply return a string? Then the internals of your WCF call can serialize the <code>Dictionary&lt;string, object&gt;</code> using the JavaScriptSerializer</p> <pre><code>public string MyServiceMethod() { var hash = new Dictionary&lt;string, object&gt;(); hash.Add("key1", "val1"); hash.Add("key2", new { Field1 = "field1", Field2 = 42}); var serialized = new JavaScriptSerializer().Serialize(hash); return serialized; } </code></pre> <p><strong>disclaimer2</strong> This is a means to the end (since you asked the question) - For a production quality application I would have a well defined interface so it was clear what was being requested and sent back over the wire.</p>