>백엔드 개발 >C++ >.NET의 System.Text.Json에서 JsonElement를 개체로 변환하는 방법은 무엇입니까?

.NET의 System.Text.Json에서 JsonElement를 개체로 변환하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-08 15:27:401000검색

.NET Core 3 이상에서는 JsonElement를 객체로 변환하는 방법

이 문서에서는 .NET Core 3 이상에서 System.Text.Json을 사용하여 JsonElement를 개체로 변환하는 방법을 살펴봅니다. System.Text.Json은 .NET Core 3.0의 새로운 JSON 처리 라이브러리이며 Json.NET를 클래스로 변환할 수 있는 ToObject()JToken 메서드와 동일한 기능을 포함하지 않습니다.

.NET 6 이상:

.NET 6부터 JsonSerializerJsonElement 또는 JsonDocument에서 직접 역직렬화하는 확장 메서드를 제공합니다.

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

이러한 방법을 사용하면 JsonElement:

에서 객체를 쉽게 역직렬화할 수 있습니다.
<code class="language-csharp">var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();</code>

.NET 5 이하:

이전 버전의 .NET에서는 이러한 방법을 사용할 수 없었습니다. 해결 방법은 JSON을 중간 바이트 버퍼에 쓰는 것입니다.

<code class="language-csharp">public static partial class JsonExtensions
{
    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);
    }
}</code>

이 방법은 JsonElement을 먼저 문자열로 변환하는 것보다 더 나은 성능을 발휘합니다.

참고:

  • JsonDocument 릴리스: JsonDocument은 풀링된 메모리를 사용하므로 제대로 릴리스해야 합니다(using 문 사용을 권장함).
  • 새로운 메서드 가용성: 새로운 역직렬화 확장 메서드는 .NET 6.0 Preview RC1 이상에서 사용할 수 있습니다.
  • JsonNode에 대한 유사한 메서드: 변경 가능한 JSON 문서 노드 JsonNode에도 유사한 메서드가 있습니다.

How to Convert a JsonElement to an Object in .NET's System.Text.Json?

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

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