2012-11-30 3 views
0

MVC 4 웹 API가 있습니다. 일반적으로 모든 속성을 반환하는 응답을 원하지만 null이 아닌 값만 반환하려는 경우가 있습니다. 전역 파일에서 GlobalConfiguration.Configuration 인스턴스의 Formatters.JsonFormatter.SerializerSettings.NullValueHandling JsonSerializerSettings를 설정하여 두 동작 중 하나를 설정할 수 있지만 응답에 따라 둘 다 사용하려고합니다. API 컨트롤러 작업 내에서 요청 범위를 구성하는 쉬운 방법이 있습니까?응답마다 JsonSerializerSettings를 설정 하시겠습니까?

답변

2

컨트롤러 동작을 변경하여 HttpResponseMessage를 반환하면 특정 동작에 대해 콘텐츠가 반환되는 방식을보다 세부적으로 제어 할 수 있습니다. 예 :

public HttpResponseMessage Get() { 
    var foo = new Foo(); 

    var objectContent = new ObjectContent<Foo>(foo, new JsonFormatter() 
           {SerializerSettings.NullValueHandling = ???}) 

    return new HttpResponseMessage() {Content = objectContent}; 
} 
0

이것은 javascript와 같은 동적 언어로 클라이언트 측에서 수행하기가 더 쉬울 것입니다.

var keys = Object.keys(json); 
for(var i = 0; i < keys.length; i++) { 
    var propertyName = keys[i]; 
    if(json[propertyName] === undefined || v[propertyName] === null) { 
      json.remove(propertyName); 
    } 
} 
return json; 
+0

그건 필요하지 않습니다. 이 경우 나는 느린 연결을 통해 많은 양의 데이터를 전송하려고 시도하고있다. – Paul

+1

그 외에도 앞으로 클라이언트에서 쉽게 적용되지 않는 다른 직렬화 옵션을 변경하고 싶다고 상상할 수도 있습니다. – Paul

관련 문제