Заменить сериализацию JSON WCF по умолчанию - PullRequest
10 голосов
/ 22 июля 2011

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

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

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

Ответы [ 2 ]

11 голосов
/ 22 июля 2011

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

0 голосов
/ 22 июля 2011

Рассмотрите возможность создания классов, соответствующих структуре вашего объекта 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"}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...