> 백엔드 개발 > C++ > 특성이 JSON 하위 속성 매핑 문제를 해결할 수 있나요?

특성이 JSON 하위 속성 매핑 문제를 해결할 수 있나요?

Linda Hamilton
풀어 주다: 2025-01-24 23:16:14
원래의
661명이 탐색했습니다.

Can Attributes Solve JSON Child Property Mapping Challenges?

유연한 JSON 속성 매핑을 위한 속성 활용

속성을 사용하여 JSON 하위 속성 매핑 처리

이 문서에서는 속성을 사용하여 중첩된 JSON 속성을 더 간단한 클래스 속성에 매핑하여 JSON 역직렬화의 유연성을 높이는 방법을 살펴봅니다.

표준 역직렬화 문제:

Newtonsoft.Json의 DeserializeObject 메서드는 효과적으로 JSON을 객체로 변환하지만 복잡한 JSON 구조 내의 하위 속성을 간단한 클래스 속성으로 매핑하는 직접적인 지원은 부족합니다.

해결책:

두 가지 효과적인 접근 방식이 제시됩니다.

방법 1: JObject 및 속성 선택:

  1. JSON 문자열을 JObject으로 구문 분석합니다.
  2. ToObject()을 사용하여 초기 개체를 만듭니다.
  3. 특정 하위 속성 값을 추출하려면 SelectToken()을 사용하세요.

예:

<code class="language-csharp">string json = "{ \"picture\": { \"id\": 123456, \"data\": { \"type\": \"jpg\", \"url\": \"http://www.someplace.com/mypicture.jpg\" } } }";

JObject jo = JObject.Parse(json);
Person p = jo.ToObject<Person>();
p.ProfilePicture = (string)jo.SelectToken("picture.data.url");</code>
로그인 후 복사

방법 2: 사용자 정의 JsonConverter:

  1. JsonConverter에서 상속받은 사용자 정의 JsonConverter를 개발합니다.
  2. ReadJson의 부동산 인구에 대한 반사를 활용하려면 JObject 메서드를 재정의합니다.
  3. [JsonConverter] 속성으로 대상 클래스를 장식합니다.
  4. 원하는 속성 경로를 속성 이름으로 지정하여 [JsonProperty] 속성을 ​​사용하세요.

예:

<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))]
class Person
{
    [JsonProperty("picture.data.url")]
    public string ProfilePicture { get; set; }
}</code>
로그인 후 복사

요약:

두 기술 모두 중첩된 JSON 속성을 더 간단한 클래스 속성에 매핑하여 JSON 역직렬화의 유연성을 향상시키는 솔루션을 제공합니다. 최적의 접근 방식은 프로젝트별 요구 사항과 선호 사항에 따라 다릅니다.

위 내용은 특성이 JSON 하위 속성 매핑 문제를 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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