婚礼做的好的婚庆公司网站,天津建设网站c2成绩查询,公众号绑定网站教程,网站指向wordpress上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象#xff0c;但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。 通过百度及查看微软的帮助文档#xff0c;上述情况下需自定义转换类以处理SKColor类型数据的… 上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。 通过百度及查看微软的帮助文档上述情况下需自定义转换类以处理SKColor类型数据的序列化及反序列化。 自定义转换类需继承System.Text.Json.Serialization下的抽象类JsonConverter最重要的是实现其中的Write和Read函数前者用于序列化时输出指定字符串内容后者用于反序列化时从字符串中解析数据。 针对本文而言定义SKColorConverter转换SKColor类型数据具体如下代码所示
public class SKColorConverter : JsonConverterSKColor
{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.SerializeSealInfo(fs, m_currSeal, options);}using (FileStream fs new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read)){using(StreamReader sr new StreamReader(fs)) { m_currSeal JsonSerializer.DeserializeSealInfo(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?pivotsdotnet-8-0 [3]https://blog.csdn.net/hefeng_aspnet/article/details/135058154