>백엔드 개발 >C++ >호환성을 유지하면서 JSON.NET의 속성을 선택적으로 역직렬화하려면 어떻게 해야 합니까?

호환성을 유지하면서 JSON.NET의 속성을 선택적으로 역직렬화하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-10 20:04:42696검색

How Can I Selectively Deserialize Properties in JSON.NET While Maintaining Compatibility?

JSON.NET의 선택적 속성 역직렬화

JSON 호환성을 유지하면서 직렬화된 속성을 열거형에서 클래스로 변환할 수 있습니다. JSON.NET은 이러한 요구 사항을 해결하는 여러 가지 방법을 제공합니다.

방법 1: Serialize 방법

JSON.NET은 ShouldSerialize 메서드를 제공합니다. PropertyName이 직렬화에서 제외될 속성인 ShouldSerializePropertyName 메서드를 생성하여 포함을 방지할 수 있습니다. 예:

<code class="language-csharp">public class Config
{
    public Fizz ObsoleteSetting { get; set; }

    public bool ShouldSerializeObsoleteSetting()
    {
        return false; // 从序列化中排除 ObsoleteSetting
    }
}</code>

방법 2: JObject를 사용하여 작업

JsonConvert.SerializeObject를 사용하는 대신 Config 개체를 JSON 개체(JObject)로 변환하고, 필수 속성을 제거하고, 결과 JObject를 직렬화합니다.

<code class="language-csharp">var jo = JObject.FromObject(config);
jo["ObsoleteSetting"].Parent.Remove();
var json = jo.ToString();</code>

방법 3: 속성 기반 제외

대상 속성에 [JsonIgnore]를 적용하면 직렬화에서 제외됩니다. 그러나 속성을 역직렬화하려면 동일한 속성 이름으로 프라이빗 설정자를 만들고 [JsonProperty]를 적용하세요. 예:

<code class="language-csharp">public class Config
{
    [JsonIgnore]
    public Fizz ObsoleteSetting { get; set; }

    [JsonProperty("ObsoleteSetting")]
    private Fizz ObsoleteSettingSetter { set { ObsoleteSetting = value; } }
}</code>

이러한 기술을 사용하면 속성의 직렬화 및 역직렬화를 선택적으로 제어하여 속성 변경을 수용하는 동시에 기존 JSON 구성과의 호환성을 보장할 수 있습니다.

위 내용은 호환성을 유지하면서 JSON.NET의 속성을 선택적으로 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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