>백엔드 개발 >C++ >복잡한 중첩 JSON 데이터를 C# 클래스로 역직렬화하려면 어떻게 해야 합니까?

복잡한 중첩 JSON 데이터를 C# 클래스로 역직렬화하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-19 22:13:10489검색

How Can I Deserialize Complex Nested JSON Data into C# Classes?

복잡하게 중첩된 JSON 데이터를 C# 클래스로 역직렬화

어떤 경우에는 API가 여러 수준의 중첩 개체가 포함된 JSON 데이터를 반환할 수 있습니다. 이러한 데이터를 C# 클래스로 역직렬화하는 것은 어려울 수 있습니다. 특히 개체 구조가 JSON 응답과 정확하게 일치하지 않는 경우 더욱 그렇습니다.

문제에 대한 자세한 설명

예제에 표시된 것처럼 제공된 JSON 응답에는 개별 작업 코드를 나타내는 여러 키-값 쌍이 포함된 "jobcodes" 개체가 포함된 루트 수준 "결과" 개체가 포함되어 있습니다. 그러나 원래 C# 개체 디자인에서는 하나의 JobCode 인스턴스만 고려했기 때문에 역직렬화 시 null 값이 반환되었습니다.

솔루션

복잡한 JSON 데이터를 성공적으로 역직렬화하려면 JSON 응답과 정확히 동일한 클래스 구조를 생성해야 합니다. 이 경우:

  1. 루트 수준 개체: 전체 JSON 구조를 나타내고 "결과" 속성을 포함하려면 "RootObject" 클래스가 필요합니다.
  2. 중첩된 개체: "Results" 클래스에는 Dictionary<string, JobCode> 유형의 "jobcodes" 속성이 포함되어야 합니다. 이는 JSON 응답에 있는 "jobcodes" 개체의 동적 특성을 반영합니다.
  3. JobCode 클래스: "JobCode" 클래스는 변경되지 않고 개별 작업 코드 세부정보를 나타냅니다.

역직렬화 코드

올바른 클래스 구조를 갖추면 역직렬화가 간단해집니다.

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>

이 코드 줄은 "RootObject" 클래스에 대한 JSON 응답을 역직렬화하여 "Results" 속성 및 관련 작업 코드 세부정보에 대한 액세스를 제공합니다.

JobCode 목록으로 돌아가기

최종적으로 작업 코드 목록을 검색하려면 간단한 루프를 사용하여 "JobCodes" 사전에서 추출할 수 있습니다.

<code class="language-csharp">List<JobCode> jobCodes = new List<JobCode>();
foreach (KeyValuePair<string, JobCode> jobCode in obj.Results.JobCodes)
{
    jobCodes.Add(jobCode.Value);
}</code>

이러한 단계를 수행하면 중첩된 개체가 포함된 복잡한 JSON 데이터를 C# 클래스로 효율적으로 역직렬화하여 API 응답에 더 쉽게 액세스하고 처리할 수 있습니다.

위 내용은 복잡한 중첩 JSON 데이터를 C# 클래스로 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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