首页 > 其他分享 >Newtonsoft.Json 序列化器的重写

Newtonsoft.Json 序列化器的重写

时间:2024-05-29 14:33:46浏览次数:25  
标签:AUDIT Int32 序列化 Json Newtonsoft TGD reader null

//TGD_AUDIT_STATUS、TGD_DEPT_ID都是Int32?的数据类型,如果他们的值包含小数点时直接反序列化会报错的,异常是:字符串的格式不正确,所以此时可以进行客户自定义反序列化的规则设定,这样就问题解决了。自定义实现类中,反序列化时调用ReadJson方法,序列化时调用WriteJson方法。

string json = @"[
	{
		'TGD_ID': '0E36DEF3-7D57-413C-8004-481DE9670503',
		'TGD_PI_CODE': '33795',
		'TGD_PD_NAME': '0.5ml,2D冻存管',
		'TGD_PI_SPEC': '0.5ml,2D冻存管',
		'TGD_PI_SPEC1': null,
		'TGD_DATE': '2024-04',
		'TGD_LOT': '210103791',
		'TGD_EXP_DATE': '2026-07-14T00:00:00',
		'TGD_PRD_DATE': '2024-01-09T00:00:00',
		'TGD_UNIT': '盒',
		'TGD_QUAN': 6.0,
		'TGD_PRICE': 200.0,
		'TGD_AMOUNT': 1200.0,
		'TGD_GROUP_CODE': null,
		'TGD_GROUP_NAME': null,
		'TGD_AUDIT_STATUS': -1.00,
		'TGD_AUDIT_DATE': '2024-05-28T15:10:17',
		'TGD_AUDIT_BY': 'admin',
		'TGD_AUDIT_MEMO': '1',
		'TGD_IN_NO': null,
		'TGD_IN_ID': null,
		'TGD_INI_ID': null,
		'TGD_DEPT_ID': 10.0,
		'TGD_DEPT_NAME': '检验科'
	}
]";
var lstOutBoundByRefused2 = JsonConvert.DeserializeObject<List<b_DataSync_OutBoundByTJDX>>(json, new CustomIntConverterByNewtonsoft());





public class CustomIntConverterByNewtonsoft : Newtonsoft.Json.JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return objectType == typeof(Int32) || objectType == typeof(Int32?);
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.Value != null && reader.ValueType != typeof(Int32))
                return Int32.Parse(reader.Value.ToString());
            return reader.Value;
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if(value != null)
                writer.WriteValue(value.ToString());
        }
    }

  

标签:AUDIT,Int32,序列化,Json,Newtonsoft,TGD,reader,null
From: https://www.cnblogs.com/itjeff/p/18220216

相关文章

  • 【HarmonyOS】JSON格式化解析Map数据
    将数组转换成Map对象,然后调用letstr=JSON.stringify(newMap),将Map转换成字符串,转换出来的结果是{}Api11以上Object.fromEntries不可用【解决方案】exportclassJsonUtil{//json字符串转为mapstaticjsonParseMap(jsonStr:string){letjsonObj:Record<......
  • JSON 现代数据交换的利器
    JSON(JavaScriptobjectNotation)是一种轻量级的数据交换格式,具有易读易写的特点。它由键值对组成,并且支持嵌套、数组等复杂的数据结构。JSON的起源与发展JSON的起源可以追溯到2001年,由道格拉斯·克罗克福特(DouglasCrockford)提出并定义。他设计JSON的初衷是创建一种轻量级......
  • ts拯救前端:优雅的在运行时校验后端接口返回数据类型 typescript-json-schema+ ajv
    包管理器:pnpm环境:node依赖:typescript-json-schema、ajv准备工作1、安装依赖pnpmaddtypescript-json-schemapnpmaddajv2、准备需要校验的数据类型//userType.tsexportinterfaceUser{id:string;token:string;nick?:string;}3、使用typescrip......
  • SQLServer2022新特性JSON_OBJECT从零个或多个表达式中构造JSON对象
    SQLServer2022新特性JSON_OBJECT从零个或多个表达式中构造JSON对象文本参考中文官方文档https://learn.microsoft.com/zh-cn/sql/t-sql/functions/json-object-transact-sql?view=sql-server-ver16参考英文文官方文档https://learn.microsoft.com/en-us/sql/t-sql/fun......
  • Python网络爬虫的时候json=就是让你少写个json.dumps()
    大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和我一样会有一个疑问吧,为啥这次要用json=data啊?因为请求头的content-type这里对......
  • XML和JSON的区别
    XML(ExtensibleMarkupLanguage)和JSON(JavaScriptObjectNotation)都是常见的数据交换格式,但它们有以下几点主要区别:1:语法结构:XML是一种基于标签的标记语言,数据包裹在开始标签和结束标签中,如<person><name>John</name><age>30</age></person>。JSON是一......
  • Mybatis-Plus 实现 jsonb类型的数据存取
    1、自定义类型处理器importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.serializer.SerializerFeature;importorg.apache.ibatis.type.BaseTypeHandler;importorg.apache.ibatis.type.JdbcType;importorg.postgresql.util.PGobject;importjava.sql.Calla......
  • 序列化与反序列化(GO)
    GO序列化与反序列化定义序列化:把对象转化为可传输的字节序列的过程称为序列化反序列化:把字节序列还原为对象的过程称为反序列化。--作为开发者,序列化和反序列化一直是我们老生常谈的问题,也是非常琐碎但是重要的知识点。对于序列化与反序列化,我这里强烈推荐一篇博客,你可以从中......
  • notepad++ 将JSON压缩成一行与JSON格式化
    参考文档:https://blog.csdn.net/weixin_43684328/article/details/109528085实际只有两部:第一步: 第二步:  ####################下面是转发参考的内容#######################无需插件,正则替换即可如果json中含有空格不想替换时可以分别替换回车和制表符{"DAT......
  • .NET8序列化与反序列化
    序列化与反序列化JSON简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,采用类的形式来描述数据之间的关联关系。JSON是一个序列化的对象或数组。JSON中仅有六个构造字符([、]、{、}、:、,),以及无意义的空白符(换行、空间等)JSON中的数据类型:对象(使用{})、数组(使用[])、......