System.Text.Json의 동일한 기능
Json.NET 프레임워크는 JToken을 클래스로 변환하는 ToObject()
메서드를 제공합니다. 그러나 System.Text.Json에는 이 메서드와 직접적으로 동등한 것이 없습니다.
.NET 6 이상에 대한 해결 방법
.NET 6에서는 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>
예:
<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>
위 내용은 JsonElement 또는 JsonDocument를 System.Text.Json의 개체로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!