> 백엔드 개발 > C++ > C#에서 중첩된 JSON을 중첩된 사전으로 역직렬화하는 방법은 무엇입니까?

C#에서 중첩된 JSON을 중첩된 사전으로 역직렬화하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-29 20:10:20
원래의
692명이 탐색했습니다.

How to Deserialize Nested JSON to a Nested Dictionary in C#?

중첩된 JSON을 중첩된 사전으로 역직렬화 in C

중첩된 JSON 개체로 작업할 때 해당 개체를 Dictionary로 역직렬화할 수 있습니다. 여기서 각 키-값 쌍은 JSON 개체의 속성-값 쌍에 해당합니다. 그러나 기본적으로 System.Text.Json은 모든 개체를 JsonElement 개체로 역직렬화하므로 원하는 C# 유형을 제공하지 못할 수 있습니다.

사용자 정의 JsonConverter

적절한 C# 유형을 얻으려면 다음을 생성해야 합니다. 사용자 정의 JsonConverter. 다음 변환기는 모든 JSON 값 유형을 처리하고 해당 C# 유형으로 변환합니다.

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    ...

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        switch (reader.TokenType)
        {
            // Handle null, boolean, string, and number types.

            case JsonTokenType.StartArray:
                // Handle arrays.

            case JsonTokenType.StartObject:
                // Handle objects.

            default:
                throw new JsonException("Unknown token");
        }
    }
}
로그인 후 복사

변환기 사용

사용자 지정 변환기를 사용하려면 역직렬화 옵션에서 지정하세요.

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
};

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
로그인 후 복사

메모

  • JSON은 숫자를 임의의 정밀도로 표현할 수 있으며 .Net 기본 숫자 유형에는 제한이 있습니다. 지원되지 않는 숫자가 JsonElements로 반환되는지 아니면 예외가 발생하는지 구성할 수 있습니다.
  • 부동 소수점 숫자 및 Dictionary에 대해 double 또는 십진수를 반환하도록 변환기를 사용자 정의할 수 있습니다. 또는 선호도에 따라 JSON 객체용 ExpandoObject를 선택하세요.

위 내용은 C#에서 중첩된 JSON을 중첩된 사전으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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