> 백엔드 개발 > C++ > ASP.NET MVC에서 사용자 정의 JSON 직렬화를 위해 JsonProperty 특성을 선택적으로 재정의하는 방법은 무엇입니까?

ASP.NET MVC에서 사용자 정의 JSON 직렬화를 위해 JsonProperty 특성을 선택적으로 재정의하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-07 15:52:40
원래의
661명이 탐색했습니다.

How to Selectively Override JsonProperty Attributes for Customized JSON Serialization in ASP.NET MVC?

JsonProperty 속성을 유연하게 제어하여 ASP.NET MVC 사용자 정의 JSON 직렬화 구현

Json.Net을 사용하는 ASP.NET MVC 애플리케이션에서 개발자는 JSON 직렬화 중에 데이터 양을 줄이기 위해 [JsonProperty(PropertyName = "shortName")] 특성을 사용하는 경우가 많습니다. 이 접근 방식은 .NET 클라이언트에 적합하지만 브라우저 기반 클라이언트에서는 약식 속성 이름을 사용하는 데 문제가 있습니다.

이 문제를 해결하려면 사용자 정의 계약 파서를 사용하여 직렬화 중에 [JsonProperty()] 속성을 ​​동적으로 무시할 수 있습니다. 방법은 다음과 같습니다.

사용자 정의 계약 파서

<code class="language-csharp">class LongNameContractResolver : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var list = base.CreateProperties(type, memberSerialization);

        foreach (JsonProperty prop in list)
        {
            prop.PropertyName = prop.UnderlyingName;
        }

        return list;
    }
}</code>
로그인 후 복사

속성 억제 전환

직렬화 중에 [JsonProperty()] 속성을 ​​선택적으로 무시하려면 JsonSerializerSettingsContractResolver 속성을 ​​조건부로 설정할 수 있습니다. 예시는 다음과 같습니다.

<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented
};

if (useLongNames)
{
    settings.ContractResolver = new LongNameContractResolver();
}

string jsonString = JsonConvert.SerializeObject(obj, settings);</code>
로그인 후 복사

useLongNames 플래그를 설정하면 [JsonProperty()] 속성을 ​​무시하고 직렬화에 더 긴 속성 이름을 사용할지 여부를 제어할 수 있습니다. 이를 통해 특정 클라이언트 요구 사항에 따라 JSON 출력을 세밀하게 제어할 수 있습니다.

출력 예

다음 예를 고려해 보세요.

<code class="language-csharp">Foo foo = new Foo
{
    CustomerNumber = "BG60938",
    CustomerName = "Bubba Gump Shrimp Company"
};

Console.WriteLine("--- 使用JsonProperty名称 ---");
Console.WriteLine(Serialize(foo, false));
Console.WriteLine();
Console.WriteLine("--- 忽略JsonProperty名称 ---");
Console.WriteLine(Serialize(foo, true));</code>
로그인 후 복사

출력:

<code>--- 使用JsonProperty名称 ---
{
  "cust-num": "BG60938",
  "cust-name": "Bubba Gump Shrimp Company"
}

--- 忽略JsonProperty名称 ---
{
  "CustomerNumber": "BG60938",
  "CustomerName": "Bubba Gump Shrimp Company"
}</code>
로그인 후 복사

[JsonProperty()] 속성을 ​​동적으로 재정의하면 JSON 직렬화 프로세스를 사용자 정의하여 특정 클라이언트에 대한 데이터 양을 최적화하는 동시에 다른 클라이언트에 대해 일관된 개체 계층 구조를 유지할 수 있습니다.

위 내용은 ASP.NET MVC에서 사용자 정의 JSON 직렬화를 위해 JsonProperty 특성을 선택적으로 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿