JSON.Net에서 JsonProperty 속성의 직렬화 동작을 재정의합니다.
ASP.Net MVC에서 Json.Net을 사용하여 JSON을 직렬화할 때 [JsonProperty]
속성을 사용하여 속성 이름을 사용자 지정할 수 있습니다. 그러나 어떤 경우에는 이 속성을 무시하고 직렬화에 원래 속성 이름을 사용할 수 있습니다.
이 목적을 위해 사용자 정의 계약 파서를 사용할 수 있습니다. 계약 파서는 JSON.Net이 객체를 JSON으로 직렬화하는 방법을 결정합니다. [JsonProperty]
속성을 무시하는 계약 파서를 생성하는 방법은 다음과 같습니다.
<code class="language-csharp">class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { // 基类创建具有简短名称的属性 IList<JsonProperty> list = base.CreateProperties(type, memberSerialization); // 使用原始名称覆盖属性名称 foreach (JsonProperty prop in list) { prop.PropertyName = prop.UnderlyingName; } return list; } }</code>
계약 확인자를 사용하려면 인스턴스화하여 JsonSerializerSettings
:
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.ContractResolver = new LongNameContractResolver();</code>
마지막으로 다음 설정을 JsonConvert.SerializeObject
에 전달하여 객체를 직렬화합니다.
<code class="language-csharp">string json = JsonConvert.SerializeObject(obj, settings);</code>
이 사용자 정의 계약 파서는 [JsonProperty]
속성이 더 짧은 이름을 지정하더라도 JsonProperty
속성을 효과적으로 무시하고 원래 이름을 사용하여 속성을 직렬화합니다.
위 내용은 JSON.Net에서 `JsonProperty` 속성 직렬화를 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!