Заменить стандартную сериализацию 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"}
Конечно, это просто альтернатива тому, что у вас уже есть и может быть неприменимо.