.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부터 JsonSerializer
는 JsonElement
또는 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
문 사용을 권장함). JsonNode
에 대한 유사한 메서드: 변경 가능한 JSON 문서 노드 JsonNode
에도 유사한 메서드가 있습니다. 위 내용은 .NET의 System.Text.Json에서 JsonElement를 개체로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!