고정 패턴이 있는 값 배열을 강력한 형식의 데이터 클래스로 역직렬화
질문:
특정 형식의 JSON 데이터를 강력한 형식의 데이터 클래스로 역직렬화할 때 문제가 있습니다. 데이터에는 문자열과 정수 값이 혼합된 플레이어 배열이 포함되어 있으며 플레이어 클래스는 고정된 순서로 명명되지 않은 값으로 완전히 구성됩니다.
해결책:
사용자 정의 변환기와 데이터 계약 속성의 조합으로 효율적인 역직렬화가 가능합니다.
맞춤 변환기 만들기:
객체를 배열로 변환하는 사용자 정의 변환기 구현:
<code class="language-c#">public class ObjectToArrayConverter<T> : JsonConverter { // 实现 WriteJson 和 ReadJson 函数 }</code>
플레이어에 사용자 정의 변환기 및 데이터 계약 속성 적용:
Player 클래스에 사용자 정의 변환기를 적용하고 데이터 계약 속성을 사용하여 해당 속성의 순서를 지정합니다.
<code class="language-c#">[JsonConverter(typeof(ObjectToArrayConverter<Player>))] [DataContract] public class Player { [DataMember(Order = 1)] public int UniqueID { get; set; } [DataMember(Order = 2)] public string PlayerDescription { get; set; } }</code>
루트 개체를 사전으로 수정:
플레이어 사용자 이름을 키로 사용하여 루트 개체의 플레이어 속성 유형을 사전으로 변경합니다.
<code class="language-c#">public class ScoreboardResults { // ... public Dictionary<string, Player> players { get; set; } }</code>
예:
다음 코드 예제에서는 이 솔루션을 사용한 역직렬화를 보여줍니다.
<code class="language-c#">using Newtonsoft.Json; var json = "{...}"; var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
기타 지침:
위 내용은 혼합 유형 값의 JSON 배열을 강력한 유형의 C# 데이터 클래스로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!