> 백엔드 개발 > C++ > Json.NET을 사용하여 동적 키가 포함된 JSON을 C# 개체로 역직렬화하는 방법은 무엇입니까?

Json.NET을 사용하여 동적 키가 포함된 JSON을 C# 개체로 역직렬화하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-19 19:31:09
원래의
971명이 탐색했습니다.

How to Deserialize JSON with Dynamic Keys into a C# Object Using Json.NET?

C#에서 동적 키 JSON 역직렬화 처리

동적 키가 포함된 JSON 응답을 수신할 때 이를 사전 정의된 데이터 모델을 사용하여 C# 개체로 역직렬화하는 것은 까다로울 수 있습니다. 이 문서에서는 JSON 응답에 동적 키가 있는 개체가 포함된 특정 시나리오를 설명합니다.

다음 JSON 응답은 문제를 보여줍니다.

<code>{
"nasdaq_imbalance": 
{
    "name": "nasdaq_imbalance", 
    "group": "Market Data", 
    "description": null
},
"DXOpen IM": 
{
    "name": "DXOpen IM", 
    "group": "Daily",
    "description": null
}, 
"Float Shares": 
{
    "name": "Float Shares", 
    "group": "Daily", 
    "description": null
}, 
}</code>
로그인 후 복사

목표는 이 JSON을 이름, 그룹 및 설명 속성이 있는 데이터 세트 개체 목록으로 역직렬화하는 것입니다.

해결책: Json.NET 및 사전 사용

Json.NET은 C# 개체에 대한 동적 키를 사용하여 JSON을 역직렬화하는 솔루션을 제공합니다. JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json)을 사용하면 JSON을 키가 JSON 응답의 동적 키이고 값이 Dataset 개체인 사전으로 역직렬화할 수 있습니다.

다음 코드는 이 솔루션을 보여줍니다.

<code class="language-csharp">using Newtonsoft.Json;

...

// 将JSON反序列化到一个包含动态键和Dataset对象的字典中
var json = @"{
""nasdaq_imbalance"": 
{
    ""name"": ""nasdaq_imbalance"", 
    ""group"": ""Market Data"", 
    ""description"": null
},
""DXOpen IM"": 
{
    ""name"": ""DXOpen IM"", 
    ""group"": ""Daily"",
    ""description"": null
}, 
""Float Shares"": 
{
    ""name"": ""Float Shares"", 
    ""group"": ""Daily"", 
    ""description"": null
}, 
}";
var datasetDictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json);

// 使用动态键作为字典键访问Dataset对象
foreach (var dataset in datasetDictionary.Values)
{
    Console.WriteLine($"Dataset: {dataset.name}, Group: {dataset.group}, Description: {dataset.description}");
}</code>
로그인 후 복사

이 솔루션을 사용하면 원래 키-값 구조를 유지하면서 C# 개체에 대한 동적 키를 사용하여 JSON을 역직렬화할 수 있습니다.

위 내용은 Json.NET을 사용하여 동적 키가 포함된 JSON을 C# 개체로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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