2012-04-14 4 views
14

개체를 serialize하고 웹 서비스에서 json으로 반환합니다. 그러나 serialize 된 json null 속성을 생략하려면 노력하고있어. 이것을 할 수있는 방법이 있습니까? Web Api MVC 4 베타를 사용하고 있습니다.MVC Web API 4 Beta의 Json에서 Null 속성 제거

+0

사실 나는 떠나려고 노력하고 있습니다. – kkocabiyik

답변

15

현재 ASP.NET 웹 API (there are plans은 최종 릴리스에서 Json.Net을 사용하도록 변경)는 기본적으로 DataContractJsonSerializer을 사용하여 JSON을 직렬화합니다.

표준 DataContract/DataMember 특성을 사용하여 직렬화 프로세스를 제어 할 수 있습니다. null 속성을 건너 뛰려면 EmitDefaultValue을 false로 설정할 수 있습니다.

[DataContract] 
public class MyObjet 
{ 
    [DataMember(EmitDefaultValue = false)] 
    public string Prop1 { get; set; } 

    [DataMember(EmitDefaultValue = false)] 
    public string Prop2 { get; set; } 
} 

당신은 JSON 응답은 당신이 포매터가 Json.Net를 사용하거나이 JavaScriptSeralizer에 내장이 들어있는 WebAPIContrib 패키지를 사용하여 직렬화하는 방법에 대한 자세한 제어를 원한다면

.

9

Json.Net에서 JsonPropertyAttribute을 NullValueHandling = NullValueHandling.Ignore와 함께 사용할 수 있습니다. 여기 보이는 것처럼 전체 클래스에 대해 이렇게 할 수있는 방법은 없으며 각 클래스 필드/속성에 대해서만 명시 적으로 사용할 수 있습니다.

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
public string SometimesNull { get; set; } 

참고하시기 바랍니다. a reasons이 있는데 왜 Json.Net은 기본적으로 null 값으로 등록 정보를 직렬화합니다. 한번보세요, 귀하의 경우에 적용 할 수있는 몇 가지 이유가있을 수 있습니다.