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

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

Linda Hamilton
Linda Hamilton원래의
2025-01-08 15:37:46990검색

How to Convert JsonElement to a Strongly-Typed Object in System.Text.Json?

System.Text.Json.JsonElement의 ToObject에 해당하는 메서드

콘셉트

.NET Core 3에서 Json.NET 라이브러리는 JToken 개체를 강력한 형식의 클래스로 변환할 수 있는 ToObject 메서드를 제공합니다. 이 문서에서는 System.Text.Json에서 JsonElement 개체를 역직렬화하는 동일한 방법을 살펴봅니다.

솔루션

.NET 6 이상:

JsonSerializer에는 JsonElement 및 JsonDocument 객체에서 직접 역직렬화할 수 있는 확장 메서드가 추가되었습니다.

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

.NET 5 이하:

성능을 향상하는 데 사용할 수 있는 해결 방법이 있습니다.

<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);
}</code>

<code class="language-csharp">var str = ""; // 一些 JSON 字符串
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>

주목

  • JsonDocument 개체를 해제하여 메모리 리소스를 해제합니다.
  • 유사한 역직렬화 기능을 위해 .NET 6의 JsonNode에 확장 메서드가 추가되었습니다.
  • 이 해결 방법은 불필요한 문자열 변환을 방지하므로 성능이 더 좋습니다.

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

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