>백엔드 개발 >C++ >C#의 JSON 직렬화에서 속성을 제외하는 방법은 무엇입니까?

C#의 JSON 직렬화에서 속성을 제외하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-23 16:48:10174검색

How to Exclude Properties from JSON Serialization in C#?

C#에서 JSON 직렬화 속성을 제외하는 방법

객체를 JSON으로 직렬화할 때 직렬화된 데이터의 크기를 줄이거나 개인 정보 보호를 유지하기 위해 특정 속성을 제외해야 하는 경우가 많습니다. 이 문서에서는 공용 속성의 JSON 직렬화를 제외하는 두 가지 일반적인 방법을 살펴봅니다.

방법 1: [JsonIgnore] 속성 사용

인기 있는 Json.Net 라이브러리를 사용하는 경우 [JsonIgnore] 속성은 속성을 제외하는 직접적인 방법을 제공합니다. 이 특성으로 속성에 주석을 추가하면 직렬화 및 역직렬화 중에 이를 무시하도록 직렬 변환기에 지시할 수 있습니다.

예:

<code class="language-csharp">public class Car
{
  // 包含在 JSON 中
  public string Model { get; set; }
  public DateTime Year { get; set; }
  public List<string> Features { get; set; }

  // 排除
  [JsonIgnore]
  public DateTime LastModified { get; set; }
}</code>

방법 2: DataContract 및 DataMember 속성 사용

또는 System.Runtime.Serialization 네임스페이스에서 제공하는 DataContract 및 DataMember 속성을 사용할 수 있습니다. DataContract 특성은 클래스를 직렬화 가능으로 표시하고 DataMember 특성은 포함할 속성을 지정합니다.

<code class="language-csharp">[DataContract]
public class Computer
{
  // 包含在 JSON 中
  [DataMember]
  public string Name { get; set; }
  [DataMember]
  public decimal SalePrice { get; set; }

  // 排除
  public string Manufacture { get; set; }
  public int StockCount { get; set; }
  public decimal WholeSalePrice { get; set; }
  public DateTime NextShipmentDate { get; set; }
}</code>

자세한 설명

두 방법 모두 직렬화 프로세스를 조작하여 작동합니다. [JsonIgnore] 특성은 주석이 달린 속성을 건너뛰도록 Json.Net 직렬 변환기에 지시하는 반면, DataMember 특성은 직렬화할 속성을 명시적으로 지정합니다.

[JsonIgnore] 속성은 사용하기 더 쉽지만 DataContract 및 DataMember 속성은 직렬화 및 역직렬화에 대해 더 많은 제어 기능을 제공합니다. 또한 속성 이름, 직렬화 형식 등 직렬화의 다른 측면을 제어할 수도 있습니다.

위 내용은 C#의 JSON 직렬화에서 속성을 제외하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.