2017-03-14 17 views
0
내가 CustomerId 값이 0이면, 나는을 설정할 있도록 조건부 직렬화를 수행 할 NewtonSoft.Json

조건부 직렬화 사용하여 C#을 수행하는 방법 - NewtonSoft.Json

public class CommonBase 
{ 
    [JsonProperty(PropertyName = "u_customer_id")] 
    public long CustomerId { get; set; } 
} 

를 사용하여 JSON 직렬화를하고있는 중이 야

을 json serialization 중에 CustomerId에 대한 공백 값. CommonBase은 기본 클래스이므로 long에서 string으로 데이터 유형을 변경할 수 없습니다.

어떻게하면됩니까?

+0

사용자 지정 사용자 지정 serializer를 작성할 수 있습니다. 예 : http://blog.maskalik.com/asp-net/json-net-implement-custom-serialization. 'WriteJson'과'ReadJson' 메소드를 구현해야합니다. – xszaboj

+0

@ xszaboj..i는 그다지 좋아하지 않습니다 .Json.Net이이 기능을 위해 내장 된 기능을 제공하는지 확인합니다. – vmb

+0

예상되는 결과는 무엇입니까? * "u_customer_id": null * 또는 * "u_customer_id": ""* 또는 직렬화에서 해당 속성을 건너 뛰시겠습니까? –

답변

0

CustomerId 속성을 nullable로 변경하여이 문제를 해결했습니다.

public long? CustomerId { get; set; } 
1

질문 제목에 거의 답이 있습니다. 찾고있는 내용은 Conditional Property Serialization

ShouldSerialize + PropertyName과 같은 방법을 추가하기 만하면됩니다. 귀하의 경우 방법은 다음과 같아야합니다 :

public bool ShouldSerializeCustomerId() 
{ 
    return SomeCondition; 
} 

P.s. 기본 클래스를 작성하는 경우에는 추상 클래스가 필요합니다.