博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON过滤去掉handler
阅读量:3670 次
发布时间:2019-05-21

本文共 1729 字,大约阅读时间需要 5 分钟。

现在前后台交互的数据传输采用JSON格式,是一种很常用和普遍的形式。在JSON处理数据的过程中,经常会去掉handler,代码如下:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] { "hibernateLazyInitializer", "
handler" });
有段时间一直不角,在网上查找后有所了解,但一直是未见其真面目,有一次系统测试中,偶然看到了。。。。
其实根据数据返回的结果,还可以去掉tradeLocas,这样得到的数据全部都是
TradeLog对象了,即会返回一个JSON数组或JOSN对象,全是
TradeLog对象的属性及其值,而不会出现T
radeLoca对象的属性。
上一点还好理解,剩下的需要理解——为什么会有handler这个东西呢?而且handler=JavassistLazyInitializer,这又是什么意思呢?handler的意思为处理者,管理者。个人认为handler的理解与代码有关,代码如下:
TradeLog oldLog = plusTradeLoca.getTradeLog(); 
oldLog 是通过其关联的对象来得到的,而不是一般的SQL语句查询的。
plusTradeLoca是通过SQL语句查询得到的,其只有
TradeLoca类相关的属性,而不存在handler这部分内容。
 说明:
plusTradeLoca是
TradeLoca的一个对象,因为它们存在多对一关系,所以这句代码是没有问题的。
情况如下:有一个类TradeLog,与其有一个关联的类TradeLoca,项目采用了Hibernate框架,
TradeLoca与
TradeLog是多对一的关系,则多个
TradeLoca 对应一个
TradeLog,在调试时,放在一个
TradeLog对象上时,会显示其相关的属性等,截图如下:
截图中有handler和tradeLocas(这个是很正常的),其它的像empName,logNo,tradeTime都是
TradeLoca
 的属性。介绍完毕后,开始说明handler的情况。
打开handler这一层,继续截图,如下图所示,下图中的formType和logNo是
TradeLog类的属性,剩下的就是handler了,它由componentIdType, constructed, entityName, getIdentifier, id, initialized, interfaces, overridesEquals, persistentClass, readOnly, readOnlyBeforeAttachedToSession, replacement, session, setIdentifierMethod, target, unwrap共16个内容组成。
上图中有一个entityName="com.posun.entity.warehouse.TradeLog",那么其value如下图所示,其实就是将
entityName的值分解展示显示的,value下每个字母和标点符号都是数组中的一个值,一共是35个,可以将
com.posun.entity.warehouse. TradeLog
分解开,确实是35个。
getIdentifierMethod内容如下:
id和interfaces内容如下:
persistentClass内容如下:
session内容如下所示,它由23个内容组成:
setIdentifierMethod内容如下所示:
target如下所示,其实就是这个TradeLog具体对象的属性及其值,由此可看出一个String类型的属性主要由count, hash, offset, value四个部分组成,value就是属性值的分解形式。同时,每个属性都有其id,比如dataCode属性的id为546。不同字段类型的属性的组成部分也不一样,比如BigDecimal和String类型的属性其组成部分就不一样。
你可能感兴趣的文章
字符串(三)
查看>>
字符串练习
查看>>
正则表达式
查看>>
木马工作原理——病毒木马 002
查看>>
mysql安装和配置ODBC驱动,然后tableau链接MySQL数据库
查看>>
物联网之智能灯开发-前言
查看>>
物联网之智能灯-Django(一)
查看>>
使用计算机视觉技术进行工业品质检测
查看>>
Java重要知识点——方法的定义
查看>>
LinkedHashSet的使用
查看>>
JUC - 线程池:
查看>>
JUC - Java8流式编程
查看>>
JavaWeb框架 - Spring注解部分:
查看>>
SpringBoot使用外部的Tomcat: bean with name 'defaultValidator' defined in class path resource
查看>>
SpringBoot上传文件413问题:
查看>>
Java多线程 - AQS简单实现:
查看>>
建造者模式:
查看>>
适配器模式:
查看>>
美团Java一面面经
查看>>
疏漏总结(九)——http与https
查看>>