2016-06-18 5 views
0

I는 그 응답
"prop1"이하로하는 API가 "SomeValu1"
"prop2": "SomeValue2"
"prop3"NULL,
"prop4을 ":"SomeValue4 "동적 API 응답에서 속성을 제거

문제는 입력에 따라 일부 null (예상되는 동작)이 될 것이므로 응답하지 않으려면 반환합니다. "SomeValu1"
"prop2": 이런 식으로 뭔가

"prop1"(prop3이없는) "SomeValue2"
"prop4는"기반 속성이 null이 될 것 "SomeValue4"

런타임 로직. 어떤 생각을 어떻게 할 수 있습니까? 당신은 JSON에서 작업하는 경우

답변

6

다음이 시도 할 수 있습니다 :

JsonConvert.SerializeObject(yourObject, 
         Newtonsoft.Json.Formatting.None, 
         new JsonSerializerSettings { 
          NullValueHandling = NullValueHandling.Ignore 
         }); 
0

DataContract 속성은 당신이 직렬화되지 않습니다 false로 설정하면 속성이 EmitDefaultValue라고 있습니다.

Dto 클래스에 이러한 속성을 추가하면 원하는 기능을 얻을 수 있습니다. https://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.emitdefaultvalue(v=vs.110).aspx

예 :

[DataContract] 
public class ExampleDto 
{ 
    [DataMember(Name="prop1", EmitDefaultValue=false)] 
    public string Prop1 {get;set;} 
    [DataMember(Name="prop2", EmitDefaultValue=false)] 
    public string Prop2 {get;set;} 
    [DataMember(Name="prop3", EmitDefaultValue=false)] 
    public string Prop3 {get;set;} 
    [DataMember(Name="prop4", EmitDefaultValue=false)] 
    public string Prop4 {get;set;} 
} 

당신은 직렬화 때 이름의 변경 특성 Name을 사용할 수 있습니다.