json解析原理
2016-05-25 17:51
543 查看
json解析原理之Gson
目标:了解json对象解析的大概过程
在这个序列化和反序列化的过程中,Gson充当的了一个解析器的角色。
第一阶段:了解Gson数据类型及其关系
第一:JsonElement(超级父类) 看JsonElement类的源码抽象类
代表json串的某一个元素
某一个元素:
JsonObject
JsonArray
JsonPrimitive(基本类型)
JsonNull
第二:JsonElement的四个子类 看JsonElement类的源码
JsonObject、JsonArray、JsonPrimitive、JsonNull
JsonElement提供了一系列的方法来判断当前的JsonElement属于哪个子类
isJsonArray()
isJsonObject()
isJsonPrimitive()
isJsonNull()
同时,该类也提供了把当前JsonElement作为上述子类的一种返回的方法
getAsJsonArray()
getAsJsonObject()
getAsJsonNull()
getAsJsonPrimitive();
第三:JsonPrimitive 看JsonPrimitive类的源码
JsonElement的子类,该类对Java的基本类型及其对应的对象类进行了封装
Java的基本数据类型(短整长,单精双精,字符<表示为单字符字符串>,布尔)
isBoolean()
isNumber():包含短整长,单双精,字节
isPrimitiveOrString():包含字符和字符串
第四:JsonArray,JsonPrimitive,JsonNull
很常见的json对象
第二阶段:Gson对象的产生
Gson对象的产生通过new Gson()方式
使用的都是默认的配置
通过JsonBuilder的方式
自定义一些配置选项,版本支持,输出,定制序列化、反序列化和构造器等。
建造者模式:设计者模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
通过new Gson()方式产生
通过这种方式创建的Gson对象,将用Java的反射机制来完成json的解析
调用无参构造方法时,会默认调用有参构造方法,将大量默认的TypeAdapterFactory添加到factories中,生成默认的Gson对象
通过GsonBuilder方式产生
通过这种方式产生的Gson对象,将使用自定义的TypeAdapter来完成json的解析
TypeAdapter:该类的作用就是把json串封装成你指定的Java对象
通过GsonBuilder注册TypeAdapter,并把TypeAdapter封装成TypeAdpterFactory对象
将封装成的TypeAdapterFactory通过GsonBuilder的create传入Gson对象中并返回
调用gson.fromJson方法,调用getTypeAdapter方法返回你自定义的Adapter
判断Gson对象是那种方式产生的
通过遍历factories得到里面的TypeAdapterFactory
添加到factories(list)中的顺序为先添加自定义的TypeAdapterFactory,再添加系统自带的TypeAdapterFactory
只要得到一个不为空就返回,这样就可以得到自定义的TypeAdapterFactory。
第三阶段:通过反射将json对象转化成java对象
相关文章推荐
- jsp页面价格
- js获取ip地址
- 分享一个utils.js源码
- ajax返回的json对象循环创建到表格
- js面向对象的几种常见写法
- js例子地址
- js关键字与保留字的坑。
- wildfly jsf 文件 上传后 可以下载 访问
- JavaScript 数字与字符串的转换
- js base64加密
- ExtJS新手调试过程
- 对jsonArray数组存储的对象做自定义按多个值排序
- js笔记—— 基础部分一
- JSP学习
- 如何学习 Javascript
- js-时间
- Js中判断变量存不存在的问题
- JSON的定义
- 基于JS实现textarea中获取动态剩余字数的方法
- js将json格式的对象拼接成复杂的url参数方法