在项目中总会用到son解析,比如RabbitMQ中使用json串解析,比如发过来的实体对象有50个字段,而实际只需要用到里面的几个字段,这时我们创建实体时,只需要创建需要的几个字段即可。

  测试实例,首先定义实体

  1. /// <summary>
  2. /// 正常实体
  3. /// </summary>
  4. public class Person
  5. {
  6. public Guid ID { get; set; }
  7.  
  8. public string Name { get; set; }
  9.  
  10. public int Age { get; set; }
  11. }
  12. /// <summary>
  13. /// 少一个实体参数
  14. /// </summary>
  15. public class DeseriPersonFew
  16. {
  17. public Guid ID { get; set; }
  18.  
  19. public string Name { get; set; }
  20.  
  21. }
  22. /// <summary>
  23. /// 多一个实体参数
  24. /// </summary>
  25. public class DeseriPersonMany
  26. {
  27. public Guid ID { get; set; }
  28.  
  29. public string Name { get; set; }
  30.  
  31. public int Age { get; set; }
  32.  
  33. public int Sex { get; set; }
  34. }

  实体解析测试,可以创建解析实体,也可以不创建实体对象,直接使用匿名类解析

  1. static void Main(string[] args)
  2. {
  3. Console.WriteLine("Hello World!");
  4. // NewMethod();
  5. Person p = new Person();
  6. p.ID = Guid.NewGuid();
  7. p.Name = "zhangsan";
  8. p.Age = ;
  9.  
  10. string personStr = JsonConvert.SerializeObject(p);
  11. //字段少于序列化实体
  12. DeseriPersonFew personFew = JsonConvert.DeserializeObject<DeseriPersonFew>(personStr);
  13. if (personFew?.Name != null)
  14. Console.WriteLine("解析json时,字段少于序列化实体:" + personFew.Name);
  15. //解析时 大于原实体字段个数
  16. DeseriPersonMany personMany = JsonConvert.DeserializeObject<DeseriPersonMany>(personStr);
  17. if (personMany?.Name != null)
  18. Console.WriteLine("解析json时,字段多于序列化实体:" + personMany.Name);
  19. //使用匿名类解析
  20. var obj= JsonConvert.DeserializeAnonymousType(personStr,new { age=,name=""});
  21. Console.WriteLine("使用匿名类解析字段:" + obj?.name);
  22.  
  23. Console.ReadLine();
  24. }

 

C#关于反序列化实例时,接收实体字段少于或大于原实体对象 解析测试的更多相关文章

  1. Webservice SOAP传输序列化总结 以及webservice之序列化以及反序列化实例

    一.所有Webservice中传递的对象都必须能够序列化,这个是作为在网络之间传输的必要条件.XML WebService和SOAP标准支持的数据类型如下: 1.基本数据类型. 标准类型,如:int ...

  2. Spring通过注解@Autowired/@Resource获取bean实例时为什么可以直接获取接口而不是注入的类

    问: 这个问题困扰了我好久,一直疑问这个接口的bean是怎么注入进去的?因为只看到使用@Service注入了实现类serviceImpl,使用时怎么却获取的接口,而且还能调用到实现类的方法,难道这个接 ...

  3. Cloud Foundry中DEA启动应用实例时环境变量的使用

    在Cloud Foundry v2中,当应用用户须要启动应用的实例时.用户通过cf CLI向cloud controller发送请求,而cloud controller通过NATS向DEA转发启动请求 ...

  4. MyBatis入门2_增删改查+数据库字段和实体字段不一致情况

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...

  5. 7、provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败.(provider: SQL 网络接口, error ...

  6. Visio 2007中进行数据库建模时如何显示字段类型以及概念名称

    关于在VISIO中进行数据库建模时如何显示字段类型,以及注释的 1 如何显示字段类型:   在visio菜单上--->点击数据库--->选项--->文档    打开后选择表这项,在上 ...

  7. 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子

    一:自定义实现InputFormat *数据源来自于内存 *1.InputFormat是用于处理各种数据源的,下面是实现InputFormat,数据源是来自于内存. *1.1 在程序的job.setI ...

  8. ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取

    前文索引:ASP.NET Core教程[二]从保存数据看Razor Page的特有属性与服务端验证ASP.NET Core教程[一]关于Razor Page的知识 实体字段属性 再来看看我们的实体类 ...

  9. fastjson中对象转化为字符串时过滤某字段

    fastjson中对象转化为字符串时过滤某字段,有两种方法: 一.在该字符定义上方添加"@JSONField(serialize=false)"注解: 二.调用含有Property ...

随机推荐

  1. Java实现微信小程序支付(完整版)

    在开发微信小程序支付的功能前,我们先熟悉下微信小程序支付的业务流程图: 不熟悉流程的建议还是仔细阅读微信官方的开发者文档. 一,准备工作 事先需要申请企业版小程序,并开通“微信支付”(即商户功能).并 ...

  2. 面试连环炮系列(六):Dubbo应用为什么要部署Zookeeper

    Dubbo应用为什么要部署Zookeeper? Zookeeper用来注册和发现服务,简单说就是提供端注册接口信息到Zookeeper,调用端在Zookeeper上查找接口对应的服务IP和端口.由于Z ...

  3. WebShell代码分析溯源(七)

    WebShell代码分析溯源(七) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['POST'],);array_map(ba ...

  4. Android 获取当前IP地址

    首先设置用户权限 <uses-permission android:name="android.permission.INTERNET"></uses-permi ...

  5. 获取主线程Thread.currentThread()

    package seday08.thread; /** * @author xingsir * 主线程 * 线程提供了一个静态方法这个方法会将运行这个方法的线程返回:static Thread cur ...

  6. 如何正确使用 Spring Cloud?【下】

    5. Spring Cloud 如何融合 DevOps? 接下来,我们来了解一下 Spring Cloud 在与 DevOps 融合方面可以做哪些事情,它是如何让应用持续交付更加快捷的?我们都知道,D ...

  7. Javascript获取元素的xpath

    //获取xpath function readXPath(element) { if (element.id !== "") {//判断id属性,如果这个元素有id,则显 示//* ...

  8. js效果 整理

    整理中... 1.js获取页面及元素高度.宽度 其他参考文献:http://www.open-open.com/lib/view/open1420120422531.html js: 网页可见区域宽: ...

  9. vue-router精简demo

    cnpm install vue-router --save-dev 或者 cnpm install vue-router --save 全局引用VueRouter import VueRouter ...

  10. SAP FI 问题汇总

    记录工作中遇到的问题汇总 1.固定资产折旧码的设置 2.与资产有关的日期 3.如何添加固定资产分类