11

Is it possible to replace the default JSON serialization of WCF (I'm currently testing with the webHttp behaviour), and passing application/json as the MIME type. In particular, I don't like that by default every property is a key/value pair like:

{"Key":"PropertyName", "Value":"PropertyValue"}

I'm using the service only for JSON-enabled endpoints (requesting data with jQuery + WCF).

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
jaraics
  • 4,239
  • 3
  • 30
  • 35

2 Answers2

12

You can use a message formatter to change the serializer used to deal with JSON. The post at https://learn.microsoft.com/en-us/archive/blogs/carlosfigueira/wcf-extensibility-message-formatters shows an example on how to change the default serializer (DataContractJsonSerializer) to another one (JSON.NET).

Micah Epps
  • 218
  • 1
  • 9
carlosfigueira
  • 85,035
  • 14
  • 131
  • 171
-1

Consider creating classes corresponding to your JSON object structure. In that case you don't have to use Dictionary<> like:

[DataContract]
public class Customer
{
    [DataMember(Name="name")]
    public string Name{get;set;}

    [DataMember(Name="id")]
    public int ID{get;set;}
}

This get serialized as:

{"name": "name-value", "id": "id-value"}

Of course, this is just an alternative to what you already have and may not be applicable.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Ajaxe
  • 647
  • 1
  • 5
  • 16