Пропустить значение по умолчанию ASP.NET MVC 4 Web API - PullRequest
0 голосов
/ 12 марта 2012

Мы планируем преобразовать наш находящийся в разработке API WCF REST для использования нового веб-API ASP.NET MVC 4, потому что он упрощает ряд вещей. Одна вещь, которая мне нравится в WCF, - это возможность добавить атрибут [DataMember (EmitDefaultValue = false)] к контрактам данных, чтобы определенные значения, которые не установлены, не были сериализованы обратно в объекты JSON / XML.

Есть ли эквивалент этой функции в новом веб-API ASP.NET MVC 4? Кажется, я ничего не могу найти по этому поводу.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2013

Как это сделать в MVC4 выпущен.Очень просто.

http://macroface.wordpress.com/2013/02/28/removing-default-values-in-json-with-the-mvc4-web-api/

0 голосов
/ 12 марта 2012

В зависимости от механизма сериализации ASP.NET Web API будет использовать другой сериализатор.В настоящее время в бета-версии JSON будет использоваться JavaScriptSerializer , а для XML используется XmlSerializer .Но есть свойство UseDataContractSerializer в XmlMediaTypeFormatter , которое позволяет использовать тот же XML-сериализатор, что и в WCF (DataContractFormatter).

Я не думаю, чтоесть уникальный способ, просто украсив вашу модель некоторым атрибутом, чтобы заставить эти два сериализатора вести себя одинаково, если только вы не пишете какой-либо пользовательский форматер мультимедийного типа.Таким образом, одна возможность состоит в написании пользовательских форматеров для XML / JSON и замене используемого сериализатора на используемый в WCF.

Вот пример такого форматера, который использует JSON.Net для JSON.Вы можете адаптировать его так, чтобы он использовал DataContractJsonSerializer , который будет учитывать свойство EmitDefaultValue.

...