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

C#基于SkiaSharp实现印章管理(2)

  上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象,但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。
在这里插入图片描述
  通过百度及查看微软的帮助文档,上述情况下需自定义转换类以处理SKColor类型数据的序列化及反序列化。
  自定义转换类需继承System.Text.Json.Serialization下的抽象类JsonConverter,最重要的是实现其中的Write和Read函数,前者用于序列化时输出指定字符串内容,后者用于反序列化时从字符串中解析数据。

在这里插入图片描述
  针对本文而言,定义SKColorConverter转换SKColor类型数据,具体如下代码所示:

public class SKColorConverter : JsonConverter<SKColor>
{public override SKColor Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options){return SKColor.Parse(reader.GetString());}public override void Write(Utf8JsonWriter writer, SKColor value, JsonSerializerOptions options){writer.WriteStringValue(value.ToString());}
}

  创建JsonSerializerOptions对象,并向其内的Converters函数添加SKColorConverter对象实例,然后在序列化及反序列化函数中使用,主要代码如下所示:

    JsonSerializerOptions options = new JsonSerializerOptions();options.Converters.Add(new SKColorConverter());using (FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.CreateNew, FileAccess.Write)){        JsonSerializer.Serialize<SealInfo>(fs, m_currSeal, options);}using (FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read)){using(StreamReader sr = new StreamReader(fs)) {	m_currSeal = JsonSerializer.Deserialize<SealInfo>(sr.ReadToEnd(), options);}}

  最后是序列化效果,如下所示,也能够正常的反序列化了。
在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/m0_75039529/article/details/135483569
[2]https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json/converters-how-to?pivots=dotnet-8-0
[3]https://blog.csdn.net/hefeng_aspnet/article/details/135058154

http://www.lryc.cn/news/384146.html

相关文章:

  • 大二C++期末复习(自用)
  • 重大进展!微信支付收款码全场景接入银联网络
  • msvcr110.dll丢失的解决方法,亲测有效的几种解决方法
  • SUSE Linux 15 sp5上Nginx安装配置升级
  • 突破Web3红海,DePIN如何构建创新生态系统?
  • 裸机与操做系统区别(RTOS)
  • 详解 ClickHouse 的分片集群
  • AI问答-医疗:什么是“手术报台”
  • S-Clustr(影子集群)V3 高并发,去中心化,多节点控制
  • 支持WebDav的网盘infiniCloud(静读天下,Zotero 等挂载)
  • Linux命令行导出MySQL数据库备份并压缩
  • 二叉树的广度优先搜索(层次遍历)
  • AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM
  • 11-Django项目--Ajax请求二
  • 代码评审——Java占位符%n的处理
  • 超低排放标准
  • Day15 —— 大语言模型简介
  • 使用了CDN,局部访问慢,如何排查
  • 谈谈SQL优化
  • 力扣随机一题 6/26 哈希表 数组 思维
  • 自动化办公04 使用pyecharts制图
  • 【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
  • 内网一键部署k8s-kubeshpere,1.22.12版本
  • Python数据分析第一课:Anaconda的安装使用
  • 数据结构——
  • 微信小程序建议录音机
  • 双指针:移动零
  • 图像亮度和对比度的调整
  • Linux加固-权限管理_chattr之i和a参数
  • windows10/win11截图快捷键 和 剪贴板历史记录 快捷键