Заменить стандартную сериализацию JSON по умолчанию WCF

Возможно ли заменить стандартную сериализацию WCS WCF (в настоящее время я тестирую поведение webHttp) и передаю application/json как тип MIME. В частности, мне не нравится, что по умолчанию каждое свойство является парой ключ/значение, например:

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

Я использую эту услугу только для конечных точек с поддержкой JSON (запрашивая данные с помощью jQuery + WCF).

Ответ 1

Вы можете использовать форматировщик сообщений, чтобы изменить сериализатор, используемый для работы с JSON. Сообщение http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx показывает пример того, как изменить сериализатор по умолчанию (DataContractJsonSerializer) на другой (JSON.NET).

Ответ 2

Рассмотрим создание классов, соответствующих вашей структуре объектов JSON. В этом случае вам не нужно использовать Dictionary<> как:

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

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

Это сериализуется как:

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

Конечно, это просто альтернатива тому, что у вас уже есть и может быть неприменимо.