首页 > 后端开发 > C++ > 如何将 JSON 元素反序列化为 System.Text.Json 中的对象?

如何将 JSON 元素反序列化为 System.Text.Json 中的对象?

Linda Hamilton
发布: 2025-01-08 15:42:40
原创
1015 人浏览过

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

System.Text.Json 元素的反序列化

在 Newtonsoft.Json 中,ToObject() 方法通常用于将 JSON 令牌转换为强类型对象。但是,System.Text.Json 中没有 readily available 的等效方法。

.NET 6 的解决方法

在 .NET 6 及更高版本中,已向 JsonSerializer 添加扩展方法,可以直接从 JsonElementJsonDocument 反序列化对象。这允许使用以下语法:

<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 和更高版本。

以上是如何将 JSON 元素反序列化为 System.Text.Json 中的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板