当前位置: 首页 > news >正文

网站建设实训感想网站设计论文经济可行性分析

网站建设实训感想,网站设计论文经济可行性分析,国内主流网站服务器,营销型网站建设电话在.NET 6.0中#xff0c;JSON处理库得到了显著的改进#xff0c;主要体现在System.Text.Json上。以下是对.NET 6.0中改进的JSON处理库的详细分析#xff1a; 一、System.Text.Json的引入与优势 在.NET 6中#xff0c;Microsoft引入了新的JSON库System.Text.Json作为官方推…在.NET 6.0中JSON处理库得到了显著的改进主要体现在System.Text.Json上。以下是对.NET 6.0中改进的JSON处理库的详细分析 一、System.Text.Json的引入与优势 在.NET 6中Microsoft引入了新的JSON库System.Text.Json作为官方推荐的序列化框架取代了以前常用的Newtonsoft.JsonJson.NET。System.Text.Json提供了以下优势 性能提升System.Text.Json使用了更少的内存开销并且在处理大量数据时有显著的速度优势。这得益于其高效的序列化和反序列化机制以及针对JSON处理进行的深度优化。API更简洁System.Text.Json的API设计更为直观和简单许多操作可以直接通过LINQ表达式完成。这使得开发者在处理JSON数据时更加便捷和高效。兼容性强虽然Json.NET支持的功能丰富但大部分情况下System.Text.Json足够满足需求。同时它能更好地与.NET的其他部分集成提供了一致的编程体验。 二、System.Text.Json的新特性 在.NET 6中System.Text.Json引入了多项新特性以增强其功能和灵活性 2.1 忽略循环引用 在.NET 6中System.Text.Json允许在序列化时忽略循环引用避免了因循环依赖而导致的异常。这通过JsonSerializerOptions中的ReferenceHandler.IgnoreCycles选项来实现。 using System; using System.Text.Json; using System.Text.Json.Serialization; public class Person { public string Name { get; set; } public Person BestFriend { get; set; } } public class Program { public static void Main() { var person new Person { Name Alice, BestFriend new Person { Name Bob, BestFriend new Person { Name Alice } // 循环引用 } }; var options new JsonSerializerOptions { ReferenceHandler ReferenceHandler.IgnoreCycles }; string json JsonSerializer.Serialize(person, options); Console.WriteLine(json); } } 在这个例子中Person类有一个BestFriend属性它指向另一个Person对象。如果BestFriend的BestFriend又指向原始对象就会形成循环引用。通过设置JsonSerializerOptions的ReferenceHandler为IgnoreCyclesSystem.Text.Json会忽略这种循环引用避免序列化时出现异常。  2.2 序列化和反序列化的通知 System.Text.Json公开了序列化和反序列化的通知接口如IJsonOnDeserialized、IJsonOnDeserializing、IJsonOnSerialized和IJsonOnSerializing。这使得开发者可以在序列化和反序列化过程中执行自定义逻辑。 using System; using System.Text.Json; using System.Text.Json.Serialization; public class Person { [JsonPropertyName(name)] public string Name { get; set; } [OnDeserialized] public void OnDeserialized() { Console.WriteLine(Deserialized!); } [OnDeserializing] public void OnDeserializing() { Console.WriteLine(Deserializing!); } [OnSerialized] public void OnSerialized() { Console.WriteLine(Serialized!); } [OnSerializing] public void OnSerializing() { Console.WriteLine(Serializing!); } } public class Program { public static void Main() { var person new Person { Name Alice }; string json JsonSerializer.Serialize(person); Console.WriteLine(json); Person deserializedPerson JsonSerializer.DeserializePerson(json); } } 在这个例子中Person类实现了IJsonOnDeserialized、IJsonOnDeserializing、IJsonOnSerialized和IJsonOnSerializing接口中的方法。这些方法在序列化和反序列化过程中会被自动调用允许开发者在这些过程中执行自定义逻辑。 2.3 属 性排序支持 通过JsonPropertyOrderAttribute特性System.Text.Json允许控制属性的序列化顺序。这解决了之前序列化顺序由反射顺序决定的问题提供了更灵活的属性排序方式。 using System; using System.Text.Json; using System.Text.Json.Serialization; [JsonPropertyOrder(nameof(LastName), nameof(FirstName))] public class Person { public string FirstName { get; set; } public string LastName { get; set; } } public class Program { public static void Main() { var person new Person { FirstName John, LastName Doe }; string json JsonSerializer.Serialize(person); Console.WriteLine(json); // 输出: {LastName:Doe,FirstName:John} } } 在这个例子中Person类使用了JsonPropertyOrderAttribute来指定属性的序列化顺序。在这个例子中LastName会在FirstName之前被序列化。  2.4 Utf8JsonWriter的使用 System.Text.Json提供了Utf8JsonWriter类用于高效地编写原始JSON。这使得开发者可以直接操作JSON的字节流提高了JSON生成的效率和灵活性。 using System; using System.Buffers.Text; using System.Text.Json; public class Program { public static void Main() { using (var doc new Utf8JsonWriter(new ArrayBufferWriterbyte())) { doc.WriteStartObject(); doc.WriteString(name, Alice); doc.WriteNumber(age, 30); doc.WriteEndObject(); string json Encoding.UTF8.GetString(doc.Flush()); Console.WriteLine(json); } } } 2.5 对IAsyncEnumerable的支持 System.Text.Json现在支持反序列化JSON数组为IAsyncEnumerableT类型这使得在处理大量数据时可以更加高效地利用异步编程模式。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; using System.Threading.Tasks; public class Program { public static async Task Main() { async IAsyncEnumerableint GetNumbersAsync() { for (int i 0; i 10; i) { await Task.Delay(100); // 模拟异步操作 yield return i; } } using (var stream new MemoryStream()) using (var writer new Utf8JsonWriter(stream)) { writer.WriteStartArray(); await foreach (var number in GetNumbersAsync()) { writer.WriteNumberValue(number); } writer.WriteEndArray(); string json Encoding.UTF8.GetString(stream.ToArray()); Console.WriteLine(json); } } } 在这个例子中GetNumbersAsync是一个返回IAsyncEnumerableint的异步方法。Utf8JsonWriter被用来将异步生成的数字序列化为JSON数组。这种方式对于处理大量数据或需要异步操作的场景特别有用。 三、与Newtonsoft.Json的比较 尽管Newtonsoft.Json在过去一直是.NET生态中处理JSON的流行选择但System.Text.Json在.NET 6中的引入提供了以下优势 性能优势System.Text.Json在性能和内存使用方面通常优于Newtonsoft.Json特别是在处理大量数据时。内置支持System.Text.Json内置于.NET 6核心库中不需要额外安装降低了项目的依赖性和复杂性。一致性System.Text.Json与.NET的其他部分更好地集成提供了一致的编程体验。 然而Newtonsoft.Json仍然是一个功能丰富的JSON库提供了许多高级特性和自定义选项。如果项目需要这些高级特性或已经在使用Newtonsoft.Json并且没有性能或内存使用方面的问题那么继续使用Newtonsoft.Json也是一个可行的选择。 综上所述.NET 6.0中的System.Text.Json库在性能、API简洁性、兼容性以及新特性方面都有显著的改进。这些改进使得System.Text.Json成为处理JSON数据的强大工具为.NET开发者提供了更高效、更便捷的JSON处理能力。
http://www.w-s-a.com/news/6514/

相关文章:

  • 缺乏门户网站建设网页设计与制作项目教程第二版
  • 手机网站横竖屏一般做建设的是什么公司
  • 免费网站建设无广告网站开发 华景新城
  • 湖州网站制作报价西安网站开发有哪些公司
  • google 浏览器开源seo软件
  • 网站空间是什么意思自己怎样建设网站
  • 国外家装设计网站如何做软件开发
  • 凡科建站登录官网当当网网站建设策划书
  • 网站百度屏蔽关键词杭州排名优化公司
  • h5响应式网站模板下载wordpress鼠标指针
  • 摄影作品投稿网站目前最好的引流推广方法
  • 资源站源码永久dede网站搬家 空间转移的方法
  • 网站建设销售的技巧话语it培训机构
  • 自建本地网站服务器wordpress南充房产网最新楼盘最近房价
  • 郑州代做网站天津哪里能做网站
  • 网站如何做排名网站建设项目的工作分解
  • 洛阳网络建站公司网站开发主流语言
  • 广州各区正在进一步优化以下措施seo值是什么意思
  • 滨州建网站公司京东云 wordpress
  • 网站视频背景怎么做免费的网络推广有哪些
  • 申请网站怎样申请广西壮族自治区专升本业务系统
  • 写作网站哪个网站做ic外单好
  • 苏州和城乡建设局网站撸撸撸做最好的导航网站
  • 网站被同行抄袭怎么办深圳中装建设集团
  • 建站及推广瓦房店 网站建设
  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名
  • 网站刷链接怎么做成都高度网站技术建设公司