>백엔드 개발 >C++ >JsonElement를 .NET 개체로 효율적으로 변환하는 방법은 무엇입니까?

JsonElement를 .NET 개체로 효율적으로 변환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-08 15:31:40773검색

JsonElement를 .NET 객체로 효율적으로 변환

.NET Core 3.0에 도입된 System.Text.Json은 고성능 JSON 처리 솔루션을 제공합니다. 그러나 Json.NET과 달리 .NET 6까지는 ToObject을 .NET 개체로 편리하게 변환하기 위한 JsonElement 메서드와 직접적으로 동등한 것이 부족했습니다.

.NET 6 이상: 단순화된 변환

.NET 6 이상 버전은 JsonSerializer 내에 프로세스를 간소화하는 내장 확장 메서드를 제공합니다.

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static object? Deserialize(this JsonElement element, Type returnType, JsonSerializerOptions? options = null);</code>

이렇게 하면 간단한 변환이 가능합니다.

<code class="language-csharp">using var jDoc = JsonDocument.Parse(jsonString);
var myObject = jDoc.RootElement.GetProperty("propertyName").Deserialize<MyObjectType>();</code>

.NET 5 이하: 실용적인 해결 방법

이러한 편리한 확장 방법이 부족한 .NET 5 이하 버전을 사용하는 프로젝트의 경우 해결 방법은 JsonElement을 바이트 버퍼에 쓴 다음 해당 버퍼에서 역직렬화하는 것입니다.

<code class="language-csharp">public static T ToObject<T>(this JsonElement element, JsonSerializerOptions options = null)
{
    var bufferWriter = new ArrayBufferWriter<byte>();
    using (var writer = new Utf8JsonWriter(bufferWriter))
        element.WriteTo(writer);
    return JsonSerializer.Deserialize<T>(bufferWriter.WrittenSpan, options);
}

public static T ToObject<T>(this JsonDocument document, JsonSerializerOptions options = null)
{
    return document.RootElement.ToObject<T>(options);
}</code>

이 방법은 문자열 또는 문자 범위 변환의 오버헤드를 방지하여 이전 .NET 버전에 대한 효율적인 솔루션을 제공합니다.

How to Efficiently Convert JsonElement to a .NET Object?

위 내용은 JsonElement를 .NET 개체로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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