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 버전에 대한 효율적인 솔루션을 제공합니다.
위 내용은 JsonElement를 .NET 개체로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!