kotlingson反序列化默认值失效深入讲解-创新互联

Gson反序列化原理

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、外贸网站建设、任县网络推广、小程序设计、任县网络营销、任县企业策划、任县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联建站为所有大学生创业者提供任县建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

原理简述


gson反序列化主要分为两个过程:

  • 根据TypeToken创建出对象
  • 根据json字符串解析数据,对对象属性赋值

对象的创建


ConstructorConstructor.get

  • 先尝试获取无参构造函数
  • 失败则尝试List、Map等情况的构造函数
  • 最后使用Unsafe.newInstance兜底(此兜底不会调用构造函数,导致所有对象初始化代码不会调用)
public  ObjectConstructor get(TypeToken typeToken) {
 final Type type = typeToken.getType();
 final Class<? super T> rawType = typeToken.getRawType();

 // first try an instance creator

 @SuppressWarnings("unchecked") // types must agree
 final InstanceCreator typeCreator = (InstanceCreator) instanceCreators.get(type);
 if (typeCreator != null) {
  return new ObjectConstructor() {
  @Override public T construct() {
   return typeCreator.createInstance(type);
  }
  };
 }

 // Next try raw type match for instance creators
 @SuppressWarnings("unchecked") // types must agree
 final InstanceCreator rawTypeCreator =
  (InstanceCreator) instanceCreators.get(rawType);
 if (rawTypeCreator != null) {
  return new ObjectConstructor() {
  @Override public T construct() {
   return rawTypeCreator.createInstance(type);
  }
  };
 }
 // 获取无参构造函数
 ObjectConstructor defaultConstructor = newDefaultConstructor(rawType);
 if (defaultConstructor != null) {
  return defaultConstructor;
 }

 // 获取List,Map等构造函数,对于List,Map的情况
 ObjectConstructor defaultImplementation = newDefaultImplementationConstructor(type, rawType);
 if (defaultImplementation != null) {
  return defaultImplementation;
 }

 // unSafe构造出对象,不调用任何的构造函数
 // finally try unsafe
 return newUnsafeAllocator(type, rawType);
 }

新闻名称:kotlingson反序列化默认值失效深入讲解-创新互联
文章URL:http://hxwzsj.com/article/dejipo.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 网站建设开发 外贸网站设计方案 定制网站制作 成都商城网站制作 网站建设改版 成都网站制作 成都响应式网站建设公司 重庆网站建设 外贸营销网站建设 成都定制网站建设 成都网站制作 成都网站制作 成都网站建设 成都网站设计公司 手机网站建设套餐 网站制作 网站建设公司 宜宾网站设计 古蔺网站建设 营销型网站建设 成都网站制作 达州网站设计