首页 > 其他分享 >字典映射处理

字典映射处理

时间:2024-07-08 09:54:52浏览次数:1  
标签:string 映射 处理 value entity key property 字典

     正常情况下不同的终端在进行接口对接时会对传输的数据进行加密,在解密之后拿到字符串,要么直接用动态类型获取,但是又要对字段进行判空校验,非常麻烦,这里封装了实体映射的方法,直接把解密后的字符串进行解析,映射到对应的实体对象中,其中是包括单实体,以及包含带子表的实体映射。 如下

        #region 字段映射

        /// <summary>
        /// 字段映射 解密映射实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="input"></param>
        /// <returns></returns>
        public static T MapEntity<T>(this string input) where T : new()
        {
            T entity = new T();
//带正则表达式解析,没有可不要 MatchCollection matches = Regex.Matches(input, @"<(\w+):([^<>]+)>"); foreach (Match match in matches) { string key = match.Groups[1].Value; string value = match.Groups[2].Value; SetNullFieldData(key, value, entity); } return entity; } /// <summary> /// 字段映射 解密映射实体 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="input"></param> /// <returns></returns> public static T MapEntityV2<T, U>(this string input, string detailName) where T : new() where U : new() { T entity = new T();
//带正则表达式解析,没有可不要 MatchCollection matches = Regex.Matches(input, @"<(\w+):(.+?)>"); foreach (Match match in matches) { string key = match.Groups[1].Value; string value = match.Groups[2].Value; if (key == detailName) { // 解析子表数据 var subTableData = value.Split(';'); List<U> subTableEntities = new List<U>(); foreach (var subData in subTableData) { var subDataParts = subData.Split(','); U subTableEntity = new U(); foreach (var part in subDataParts) { var subParts = part.Split(':'); string subKey = subParts[0]; string subValue = subParts[1]; SetNullFieldData(subKey, subValue, subTableEntity); } subTableEntities.Add(subTableEntity); } // 将子表数据映射到主实体对象的属性中 var property = typeof(T).GetProperty(key); if (property != null) { property.SetValue(entity, subTableEntities); } } else { // 解析主表数据 SetNullFieldData(key, value, entity); } } return entity; } private static void SetNullFieldData<T>(string key, string value, T entity) { var property = typeof(T).GetProperty(key); if (property == null) { return; } if (property.PropertyType == typeof(int?) && int.TryParse(value, out int parsedValue)) { property.SetValue(entity, parsedValue); } else if (property.PropertyType == typeof(long?) && long.TryParse(value, out long longValue)) { property.SetValue(entity, longValue); } else if (property.PropertyType == typeof(short?) && short.TryParse(value, out short shortValue)) { property.SetValue(entity, shortValue); } else { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType)); } } #endregion

 

标签:string,映射,处理,value,entity,key,property,字典
From: https://www.cnblogs.com/Sientuo/p/18289330

相关文章

  • SpringBoot项目开发中公共字段的处理
    序言在SpringBoot项目开发中,会存在许多重复的公共字段,例如:字段名create_time创建时间update_time更新时间create_user创建操作人update_user更新操作人对于以上四个字段,需要大量的重复代码来实现,比较繁琐......
  • C++异常处理算法总结
    一、背景        C++的异常处理机制是用来处理程序运行过程中出现的异常情况的。异常处理可以帮助程序应对错误,避免程序崩溃,并且可以提供有意义的错误信息。下面是C++异常处理的关键概念和常用模式的总结。二、异常处理1.异常处理的基本机制        C++......
  • 昇思25天学习打卡营第10天 | 自然语言处理:RNN实现情感分类
    1.RNN实现情感分类1.2概述情感分类是自然语言处理中的经典任务,是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型,实现如下的效果:输入:Thisfilmisterrible正确标签:Negative(负面)预测标签:Negative输入:Thisfilmisgreat正确标签:......
  • 【Spring Boot】关系映射开发(三):多对多映射
    关系映射开发(三):多对多映射1.创建实体1.1创建Student实体1.2创建Teacher实体2.创建测试在多对多关联关系中,只能通过中间表的方式进行映射,不能通过增加外键来实现。注解@ManyToMany用于关系的发出端和接收端。关系的发出端定义一个集合类型的接......
  • 制作mdx字典时的常见错误
    首先确保data.txt的换行字符(NewlineCharacter)是CR+TF(Windows)Encoding是UTF-8 withoutSignature如果不按这个标准来,很容易出现词条数目对不上。 下面正式进行troubleshooting: Beginingloadingsourcefile...Contentislongerthen8388608atposition:0ofthe......
  • ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)
    简介ControlNet是一个很强的插件,提供了很多种图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用。接下来就演示几种热门常用的控制方式1.OpenPose(姿态控制预处理器)姿态控制预处理器可以根据提供的图......
  • 操作系统笔记分享(第三章 处理机的调度与死锁)
    文章目录介绍三、处理机的调度与死锁3.1处理机调度概述处理机调度层次高级调度中级调度低级调度进程调度的任务和方式处理机调度算法的目标3.2调度算法先来先服务(FCFS)短作业优先(SJF)抢占式非抢占式优先级(PR)高相应比优先调度算法(HRRN)时间片轮转(RR)多级队列多级反馈队......
  • 服务器经常死机怎么办?如何处理
    一、服务器经常死机的原因1.硬件故障:服务器硬件故障是导致死机的主要原因之一。例如,内存条、硬盘、主板等部件出现故障,可能导致服务器无法正常工作。2.软件问题:操作系统、应用程序等软件出现故障或冲突,也可能导致服务器死机。例如,应用程序崩溃、系统文件损坏等。3.网络问题:网络......
  • 【深度解析】Zxing:开源条形码图像处理库的领航者
                    在数字化浪潮席卷全球的今天,二维码和条形码已经成为我们日常生活中不可或缺的一部分,从超市购物到移动支付,从文档管理到物流追踪,它们无处不在。而在这背后,有一个开源项目默默地支撑着这一切——Zxing,一个强大的条形码图像处理库。     ......
  • PyTorch中的多进程并行处理
    PyTorch是一个流行的深度学习框架,一般情况下使用单个GPU进行计算时是十分方便的。但是当涉及到处理大规模数据和并行处理时,需要利用多个GPU。这时PyTorch就显得不那么方便,所以这篇文章我们将介绍如何利用torch.multiprocessing模块,在PyTorch中实现高效的多进程处理。多进程是一......