>백엔드 개발 >C++ >JSON.Net 속성을 개체 대신 값으로 직렬화/역직렬화하려면 어떻게 해야 합니까?

JSON.Net 속성을 개체 대신 값으로 직렬화/역직렬화하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-30 12:57:10623검색

How Can I Serialize/Deserialize JSON.Net Properties as Values Instead of Objects?

Json.Net: 속성을 개체 대신 값으로 처리

JSON.Net을 사용하여 자동차와 같은 복잡한 개체를 나타내는 경우 소개에 설명된 StringId 클래스에서는 속성을 중첩된 개체가 아닌 일반 값으로 직렬화/역직렬화하는 것이 바람직한 경우가 있습니다. 이 문서에서는 이를 달성하기 위한 두 가지 접근 방식, 즉 유형 변환기와 JSON 변환기를 보여줍니다.

유형 변환기

StringId 클래스용으로 특별히 유형 변환기를 추가하면 JSON.Net이 다음을 수행할 수 있습니다. 직렬화/직렬화 해제 중에 문자열로/에서 문자열로 변환:

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // ... (Implement CanConvertFrom, CanConvertTo, ConvertFrom, and ConvertTo)
}

JSON 변환기

또는 JSON 변환기는 변환 프로세스에 대한 더 많은 제어 기능을 제공합니다. StringId 클래스에 사용자 정의 JSON 변환기를 적용하면 직렬화 및 역직렬화 논리를 명시적으로 정의할 수 있습니다.

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // ... (Implement CanConvert, ReadJson, and WriteJson)
}

전역 변환기 구성

JSON 변환기도 다음과 같이 정의할 수 있습니다. 전역적으로 설정합니다. 예를 들어 StringId 유형의 모든 속성을 값으로 처리하려면

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Converters = { new StringIdConverter() }
};

추가 고려 사항

  • .Net Core에서 유형 변환기 지원에는 JSON이 필요합니다. Net 10.0.1 이상.
  • JSON.Net의 이식 가능한 빌드에서는 유형 변환기 지원이 지원되지 않습니다. 버전 10.0.3부터 사용 가능합니다.
  • 문자열 표현에서 숫자 또는 날짜/시간 데이터로 작업할 때 제공된 문화권을 사용하여 문화권 간 이식성을 보장하는 것이 중요합니다.

위 내용은 JSON.Net 속성을 개체 대신 값으로 직렬화/역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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