当前位置: 首页 > 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

相关文章:

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

上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象&#xff0c;但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。   通过百度及查看微软的帮助文档&#xff0c;上述情况下需自定义转换类以处理SKColor类型数据的…...

大二C++期末复习(自用)

一、类 1.定义成员函数 输入年份判断是否是闰年&#xff0c;若是输出年份&#xff1b;若不是&#xff0c;输出NO #include<iostream> #include<cstring> using namespace std; class TDate{private:int month;int day;int year;public:TDate(int y,int m,int d)…...

重大进展!微信支付收款码全场景接入银联网络

据中国银联6月19日消息&#xff0c;近日&#xff0c;银联网络迎来微信支付收款码场景的全面接入&#xff0c;推动条码支付互联互通取得新进展&#xff0c;为境内外广大消费者提供更多支付选择、更好支付体验。 2024年6月&#xff0c;伴随微信支付经营收款码的开放&#xff0c;微…...

msvcr110.dll丢失的解决方法,亲测有效的几种解决方法

最近&#xff0c;我在启动一个程序时&#xff0c;系统突然弹出一个错误提示&#xff0c;告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑&#xff0c;因为我之前从未遇到过这样的问题。经过一番搜索和尝试&#xff0c;我总结了5种靠谱的解决方法。下面分享给大…...

SUSE Linux 15 sp5上Nginx安装配置升级

1.安装SUSE linux 15 SP5 图形化界面安装很简单&#xff0c;选择最小安装&#xff0c;安装好后&#xff0c;使用vim编辑配置文件&#xff0c;结果提示"bash: vim: command not found"。 最简安装把一些常用命令都整没有了&#xff0c;于是又重新选择了Server Applica…...

突破Web3红海,DePIN如何构建创新生态系统?

撰文&#xff1a;TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向&#xff0c;当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设&#xff0c;寻找更多 Web3 行业创新机遇成为…...

裸机与操做系统区别(RTOS)

声明&#xff1a;该系列笔记是参考韦东山老师的视频&#xff0c;链接放在最后&#xff01;&#xff01;&#xff01; rtos&#xff1a;这种系统只实现了内核功能&#xff0c;比较简单&#xff0c;在嵌入式开发中&#xff0c;某些情况下我们只需要多任务&#xff0c;而不需要文件…...

详解 ClickHouse 的分片集群

一、简介 分片功能依赖于 Distributed 表引擎&#xff0c;Distributed 表引擎本身不存储数据&#xff0c;有点类似于 MyCat 之于 MySql&#xff0c;成为一种中间件&#xff0c;通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…...

AI问答-医疗:什么是“手术报台”

手术报台并不是传统意义上的医疗工具或设备&#xff0c;而是一个与手术耗材追溯管理相关的系统或工具。以下是对手术报台的详细解释&#xff1a; 一、定义与功能 手术报台系统&#xff0c;如医迈德手术报台系统&#xff0c;是一款面向医院跟台人员的微信小程序。 它通过手术耗…...

S-Clustr(影子集群)V3 高并发,去中心化,多节点控制

S-Clustr 项目地址:https://github.com/MartinxMax/S-Clustr/releases/tag/S-Clustr-V3.0 Maptnh Не ограничивайте свои действия виртуальным миром. GitHub: Maptnh Jay Steinberg Man kann die Menschen, die man hasst, in d…...

支持WebDav的网盘infiniCloud(静读天下,Zotero 等挂载)

前言 WebDav是一种基于HTTP的协议&#xff0c;允许用户在Web上直接编辑和管理文件&#xff0c;如复制、移动、删除等。 尽管有一些网盘支持WebDav&#xff0c;但其中大部分都有较多的使用限制。这些限制可能包括&#xff1a;上传文件的大小限制、存储空间的限制、下载速度的限…...

Linux命令行导出MySQL数据库备份并压缩

Linux命令行导出MySQL数据库备份并压缩 导出SQL&#xff1a; 如果使用的是 MySQL 或者 MariaDB 可以使用mysqldump工具进行数据备份的导出&#xff1b; 基本命令&#xff1a; mysqldump -u用户名 -p密码 数据库名称 > 要导出的文件名.sql替换掉你实际的数据库“用户名”…...

二叉树的广度优先搜索(层次遍历)

目录 定义 层序遍历的数据结构 实现过程简述 具体代码 定义 层序遍历就是从左到右一层一层地遍历二叉树。 层序遍历的数据结构 层序遍历需要借用一个辅助数据结构实现&#xff0c;由于队列具有先进先出的特性&#xff0c;符合一层一层遍历的逻辑&#xff0c;而栈先进后出…...

AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM

导入音频&#xff0c;选中音频&#xff0c;并且点 New Multitrack Session 的图标 设计文件名和存储路径&#xff0c;然后点 OK 点 Essential Sound 面板点 Music &#xff08;如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来&#xff09; 点 Duration 展…...

11-Django项目--Ajax请求二

目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…...

代码评审——Java占位符%n的处理

问题描述 在软件开发项目中&#xff0c;特别是在处理动态内容生成与呈现至前端界面的过程中&#xff0c;正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱&#xff0c;还会引发一系列隐蔽的问题&#xff0c;这些问题…...

超低排放标准

据朗观视觉小编了解发现&#xff0c;超低排放标准作为衡量一个行业或企业环保水平的重要指标&#xff0c;越来越受到社会各界的关注。本文将深入探讨超低排放标准的内涵、实施意义以及未来展望。 一、超低排放标准的定义 超低排放标准&#xff0c;是指在特定工业生产过程中&am…...

Day15 —— 大语言模型简介

大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…...

使用了CDN,局部访问慢,如何排查

如果是局部访问慢&#xff0c;则可从如下角度查看 是否DNS设置错误导致&#xff1f; 个别用户可能存在local DNS设置错误&#xff0c;导致出现跨地域或跨运营商访问。因为CDN的权威DNS是基于用户请求的localDNS来判断所属的地区和运营商&#xff0c;从而将请求引导至对应最近…...

谈谈SQL优化

SQL优化是数据库性能优化中的关键环节&#xff0c;旨在提高查询执行的效率和响应速度。下面是一些常见的SQL优化技巧和策略&#xff0c;涵盖索引、查询设计、表结构设计等方面&#xff1a; 1. 索引优化 创建索引&#xff1a;为常用查询的过滤条件&#xff08;WHERE 子句&…...

AgentGym:构建标准化AI智能体训练与评估平台的实践指南

1. 项目概述&#xff1a;当AI智能体走进“健身房”最近在开源社区里&#xff0c;一个名为“AgentGym”的项目引起了我的注意。它来自开发者WooooDyy&#xff0c;名字起得很有意思——“智能体健身房”。这可不是让AI去举铁跑步&#xff0c;而是为那些基于大语言模型的智能体提供…...

CIMR-V架构:RISC-V与存内计算融合的边缘AI加速方案

1. CIMR-V架构设计背景与核心挑战在边缘AI设备领域&#xff0c;能效比和实时性是两个最关键的指标。传统冯诺依曼架构中"内存墙"问题尤为突出——数据在存储单元和计算单元之间的频繁搬运消耗了系统60%以上的能量。存内计算(CIM)技术通过将计算单元嵌入存储阵列&…...

第一次喝精酿怎么品

精酿酒吧新手指南&#xff1a;四步解锁品酒技巧&#xff0c;轻松告别困惑第一次走进精酿酒吧&#xff0c;新手常因陌生酒名和风味描述困惑。其实品精酿很简单&#xff0c;掌握几个步骤即可入门——这种认真品酒的态度&#xff0c;早在中世纪就有&#xff0c;欧洲修士们酿造后会…...

基于CircuitPython与BLE的无线手势鼠标:从传感器到HID设备的实践

1. 项目概述与核心思路想没想过&#xff0c;你手里的那块开发板&#xff0c;除了点灯、读传感器&#xff0c;还能直接变成你电脑的鼠标&#xff1f;不是通过USB线&#xff0c;而是像你的蓝牙耳机一样&#xff0c;无线连接&#xff0c;靠手腕的晃动来控制光标。这个想法听起来有…...

NAT 类型详解:四种 NAT 的数据流与原理解析

NAT 类型详解&#xff1a;四种 NAT 的数据流与原理解析摘要&#xff1a;NAT&#xff08;Network Address Translation&#xff09;是 P2P 通信中绕不开的关卡。不同的 NAT 类型决定了内网设备能否被外部直接访问&#xff0c;直接影响 WebRTC 等 P2P 技术的穿透成功率。本文通过…...

AI代码助手与Django全栈开发:人机协同编程新范式实践

1. 项目概述&#xff1a;当AI代码助手遇上Django全栈开发如果你是一名独立开发者、初创公司的技术负责人&#xff0c;或者正在学习全栈开发&#xff0c;那么“Cursor-Django”这个项目绝对值得你花时间研究。这不是一个简单的Django教程&#xff0c;而是一个由Coding for Entre…...

Godot集成CEF:用Web技术构建高性能跨平台桌面应用

1. 项目概述&#xff1a;一个被低估的桌面应用开发利器 如果你正在寻找一个能让你用熟悉的Web技术&#xff08;HTML、CSS、JavaScript&#xff09;来构建高性能、跨平台桌面应用的工具&#xff0c;并且对Electron的臃肿和资源占用感到头疼&#xff0c;那么你很可能已经听说过C…...

ARM SCTLR2_EL2寄存器解析与虚拟化安全控制

1. ARM SCTLR2_EL2寄存器架构解析SCTLR2_EL2是ARMv8/v9架构中EL2&#xff08;Hypervisor&#xff09;级别的扩展系统控制寄存器&#xff0c;作为标准SCTLR_EL2的补充&#xff0c;它通过掩码位机制实现了对关键系统功能的细粒度控制。这个64位寄存器主要包含两类功能字段&#x…...

从视频到文字:我的学习效率革命之旅

从视频到文字&#xff1a;我的学习效率革命之旅 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还记得那个周末的下午&#xff0c;我正对着B站上一个两小时的…...

从零解析ST电机库FOC:核心算法与工程实现

1. FOC技术基础&#xff1a;从三相电流到旋转磁场 我第一次接触FOC&#xff08;Field Oriented Control&#xff09;时&#xff0c;被那些复杂的数学公式搞得头晕目眩。直到有一天&#xff0c;我把无刷电机想象成小时候玩的磁铁小车&#xff0c;突然就明白了其中的奥妙。FOC本质…...