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

C# Newtonsoft.Json 反序列化子类数据丢失问题

问题描述:

代码中对象类型是父类:

public List<EmbossingActionConfigBase> EmbossingActionConfigBaseList; 

但是保存的数据是子类数据,然后序列化或者反序列化的时候要求对象类型不丢失。

解决方法:


 

var settings = new JsonSerializerSettings
{TypeNameHandling = TypeNameHandling.Auto
};
string json = JsonConvert.SerializeObject(list, settings);

效果:

json字符串:

"EmbossingActionConfigBaseList": {"$type": "System.Collections.Generic.List`1[[FluentVision.Control.EmbossingActionConfigBase, FluentVision.Controls]], mscorlib","$values": [{"$id": "24","$type": "FluentVision.Control.StageZActionConfig, FluentVision.Controls","Gap": 500,"Speed": 100.0,"MaxForce": 4.0,"MinForce": 1.0,"Overtime": 100,"EmbossingActionType": 0,"Delay": 100},{"$id": "25","$type": "FluentVision.Control.StageZActionConfig, FluentVision.Controls","Gap": 100,"Speed": 50.0,"MaxForce": 4.0,"MinForce": 1.0,"Overtime": 100,"EmbossingActionType": 0,"Delay": 100},{"$id": "26","$type": "FluentVision.Control.StageZActionConfig, FluentVision.Controls","Gap": 30,"Speed": 20.0,"MaxForce": 4.0,"MinForce": 1.0,"Overtime": 100,"EmbossingActionType": 0,"Delay": 100},{"$id": "27","$type": "FluentVision.Control.LevelingActionConfig, FluentVision.Controls","ToleranceError": 10.0,"BaseGap": 30,"EmbossingActionType": 1,"Delay": 100},{"$id": "28","$type": "FluentVision.Control.DetectMaskActionConfig, FluentVision.Controls","MaskAlignmentPositionDescription": "下视觉产品拍照位","EmbossingActionType": 2,"Delay": 10},{"$id": "29","$type": "FluentVision.Control.AlignmentActionConfig, FluentVision.Controls","ProductAlignmentPositionDescription": "下视觉相机压合位置产品拍照","EmbossingActionType": 3,"Delay": 10}]
}

其中type字段就是类型描述,多个子类信息分开保存,反序列化的时候即使使用基类类型承接也不会丢失信息。

参考:C# Newtonsoft.Json 反序列化派生类数据丢失问题_c# newtonsoft json 派生类型-CSDN博客

http://www.xdnf.cn/news/1316359.html

相关文章:

  • 音频分类标注工具
  • 矿物分类案列 (一)六种方法对数据的填充
  • Java零基础笔记20(Java高级技术:单元测试、反射、注解、动态代理)
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • 勾股数-洛谷B3845 [GESP样题 二级]
  • 平行双目视觉-动手学计算机视觉18
  • Linux应用软件编程---多任务(线程)(线程创建、消亡、回收、属性、与进程的区别、线程间通信、函数指针)
  • (一)React企业级后台(Axios/localstorage封装/动态侧边栏)
  • Android 对话框 - 基础对话框补充(不同的上下文创建 AlertDialog、AlertDialog 的三个按钮)
  • WPFC#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
  • C#WPF实战出真汁13--【营业查询】
  • [辩论] TDD(测试驱动开发)
  • ZKmall开源商城的移动商城搭建:Uni-app+Vue3 实现多端购物体验
  • Collections.synchronizedList是如何将List变为线程安全的
  • Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
  • 李宏毅NLP-11-语音合成
  • 在 Element UI 的 el-table 中实现某行标红并显示删除线
  • 【PHP】Hyperf:接入 Nacos
  • Centos中内存CPU硬盘的查询
  • vscode无法检测到typescript环境解决办法
  • OpenCV 图像处理核心技术:边界填充、算术运算与滤波处理实战
  • 大模型应用发展与Agent前沿技术趋势(中)
  • JVM常用工具:jstat、jmap、jstack
  • 【Linux】IO多路复用
  • 17-线程
  • Python自学10-常用数据结构之字符串
  • Python异常、模块与包(五分钟小白从入门)
  • 文件快速复制工具,传输速度提升10倍
  • riscv中断处理软硬件流程总结
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day6