您的位置:首页 > Web前端 > JavaScript

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对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: