>백엔드 개발 >C++ >System.Text.Json에서 JSON 요소를 개체로 역직렬화하는 방법은 무엇입니까?

System.Text.Json에서 JSON 요소를 개체로 역직렬화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-08 15:42:401015검색

How to Deserialize JSON Elements to Objects in System.Text.Json?

System.Text.Json 요소 역직렬화

Newtonsoft.Json에서 ToObject() 메서드는 일반적으로 JSON 토큰을 강력한 형식의 개체로 변환하는 데 사용됩니다. 그러나 System.Text.Json에서는 쉽게 사용할 수 있는 동등한 메서드가 없습니다.

.NET 6용 솔루션

.NET 6 이상에서는 JsonSerializer 또는 JsonElement에서 직접 개체를 역직렬화할 수 있도록 JsonDocument에 확장 메서드가 추가되었습니다. 이는 다음 구문을 허용합니다:

<code class="language-csharp">using var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>

.NET 5 및 이전 버전에 대한 해결 방법

.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);
}

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

지침:

  • JsonDocument는 무료이므로 using 문을 사용해야 한다는 점을 기억하세요.
  • 이 해결 방법은 .NET Core 3.1 이상에서 사용할 수 있습니다.

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

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