Gson原理
来源:互联网 发布:动态桌面壁纸软件下载 编辑:程序博客网 时间:2024/05/17 00:08
http://blog.csdn.net/chunqiuwei/article/category/5881669(gson笔记)
http://blog.csdn.net/chunqiuwei/article/details/49401733(工作原理概述)
http://blog.csdn.net/chunqiuwei/article/details/49338053(gson反射机制讲解一)
http://blog.csdn.net/chunqiuwei/article/details/49535419(gson反射机制讲解二)
http://blog.csdn.net/chunqiuwe
GSON原理:
1)如果是通过GsonBuilder创建的Gson对象,那么就用自定义的TyperAdapter来完成json的解析
2)如果是通过new Gson()创建的Gson对象,那么就用Java反射机制来完成json的解析。
判断创建方式:通过Gson的factories(List) 这个对像add TypeAdapterFactory的顺序来控制的!
Gson解析成Java对象的实现原理
1)注册自定义的或者Gson自己定义的TypeAdapter
2)将TypeAdapter封装成TypeAdapterFactory,并把此Factory添加到Gson的factories(List)中
3)通过fromJson方法最终调用getAdapter,遍历factories,获取fromJson的第二个参数type与之对应的TypeAdapterFactory,调用该Factory的create方法来创建一个TypeAdapter
4)调用TypeAdapter的read方法完成json到Java Object的转换。
其调用的是Gson的有参构造器,而在这个有参构造器里面就让Gson的factories变量添加了大量的自定义的TypeAdapterFactory,这些TypeAdapterFactory和与之对应的TypeAdapter基本上都在TypeAdapters类里面,当然也有其余的几个单独的TypeAdapter,Gson都提供了与之相对应的TypeAdapter类型
Gson用反射机制解析Json的流程如下:
前提:通过调用Gson的getAdpter来过滤掉一些不用的TypeAdapterFactory,将能用的到的TypeAdapterFactory放入缓存中
1)从factories中取ReflectiveTypeAdapterFactory对象
2)调用ReflectiveTypeAdapterFactory的create方法,返回一个Adapter对象
3)在通过Adpater的read方法循环读取json:循环解析json串中的每一对name/value,并为你的javaBean里的某个变量并赋值,调用了BoundField的read方法,进行读取;其实BoundFied是一个抽象类,提供了read和write方法
反序列化:Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法
序列化:Gson提供了tojson()方法来实现从java实体到Json相关对象的方法
- Gson原理
- Gson解析原理概述
- Gson原理简析
- Gson解析原理概述
- Gson反序列化的实现原理
- Gson
- Gson
- Gson
- Gson
- GSON
- Gson
- Gson
- Gson
- Gson
- gson
- GSON
- Gson
- Gson
- 机器学习笔记——机器学习中的距离
- idea+Maver+逆向工程+SSM
- Struts 2中<s:append>标签的用法
- 设计模式之备忘录模式Memento
- 第八周(1)项目一 顺序串算法库
- Gson原理
- 第八周项目3- 顺序串算法
- 从数据库取得数据
- python基础实例4:天数问题
- 第八周项目一C/C++数据结构之自建算法库——顺序串
- 第八周【串】项目3-顺序串算法
- 踩坑:App上传GooglePlay后Google登录和FaceBook登录异常
- 微信小程序设计weui框架
- BigDecimal.setScale 处理java小数点