jaraics
jaraics

Reputation: 4299

Replace WCF default JSON serialization

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).

Upvotes: 12

Views: 14888

Answers (2)

carlosfigueira
carlosfigueira

Reputation: 87218

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).

Upvotes: 13

Ajaxe
Ajaxe

Reputation: 647

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.

Upvotes: -1

Related Questions