Json.Net은 직렬화 프로세스를 사용자 정의하기 위한 JsonProperty 속성을 제공하므로 개발자는 직렬화 중에 속성 이름을 지정할 수 있습니다. 그러나 일부 경우(예: 클라이언트가 브라우저인 경우) 로드를 줄이기 위해 더 짧은 속성 이름을 사용하면 클라이언트 코드에서 더 짧은 이름을 사용하는 데 문제가 발생할 수 있습니다.
이 문제를 해결하려면 사용자 정의 계약 파서를 사용하여 JsonProperty 속성을 선택적으로 무시할 수 있습니다. 방법은 다음과 같습니다.
<code class="language-csharp">public class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { // 使用简短名称获取默认属性 IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization); // 将简短名称替换为原始属性名称 foreach (var property in properties) { property.PropertyName = property.UnderlyingName; } return properties; } }</code>
이 파서는 먼저 JsonProperty 속성에 지정된 더 짧은 이름을 사용하여 속성 목록을 생성하는 CreateProperties 메서드를 재정의합니다. 그런 다음 각 속성을 반복하여 더 짧은 이름을 기본 속성 이름으로 바꿉니다.
이 파서를 사용하려면 JsonSerializerSettings의 계약 파서로 설정하세요.
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ContractResolver = new LongNameContractResolver();</code>
그런 다음 사용자 정의 설정을 사용하여 직렬화할 때 JsonProperty 속성을 선택적으로 무시할 수 있습니다.
<code class="language-csharp">// 如果 useLongNames 为 true,则忽略 JsonProperty 属性 if (useLongNames) { settings.ContractResolver = new LongNameContractResolver(); }</code>
이 솔루션을 사용하면 JsonProperty 속성이 무시되는 시기를 프로그래밍 방식으로 제어할 수 있으므로 클라이언트 유형이나 특정 조건에 따라 원하는 직렬화 동작을 얻을 수 있습니다.
위 내용은 JSON 직렬화 중에 JsonProperty 속성을 선택적으로 무시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!