속성을 사용하여 JSON 하위 속성 매핑 처리
이 문서에서는 속성을 사용하여 중첩된 JSON 속성을 더 간단한 클래스 속성에 매핑하여 JSON 역직렬화의 유연성을 높이는 방법을 살펴봅니다.
표준 역직렬화 문제:
Newtonsoft.Json의 DeserializeObject
메서드는 효과적으로 JSON을 객체로 변환하지만 복잡한 JSON 구조 내의 하위 속성을 간단한 클래스 속성으로 매핑하는 직접적인 지원은 부족합니다.
해결책:
두 가지 효과적인 접근 방식이 제시됩니다.
방법 1: JObject 및 속성 선택:
JObject
으로 구문 분석합니다.ToObject()
을 사용하여 초기 개체를 만듭니다.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:
JsonConverter
에서 상속받은 사용자 정의 JsonConverter
를 개발합니다.ReadJson
의 부동산 인구에 대한 반사를 활용하려면 JObject
메서드를 재정의합니다.[JsonConverter]
속성으로 대상 클래스를 장식합니다.[JsonProperty]
속성을 사용하세요.예:
<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))] class Person { [JsonProperty("picture.data.url")] public string ProfilePicture { get; set; } }</code>
요약:
두 기술 모두 중첩된 JSON 속성을 더 간단한 클래스 속성에 매핑하여 JSON 역직렬화의 유연성을 향상시키는 솔루션을 제공합니다. 최적의 접근 방식은 프로젝트별 요구 사항과 선호 사항에 따라 다릅니다.
위 내용은 특성이 JSON 하위 속성 매핑 문제를 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!