Gson解释json字串
今天,对Gson解释json字串做了一个验证,以便以后快速的使用Gson对json串进行解释(只验证使用,没追究源码)。
一、首先对验证后的结果作一个总结:
1.如果json串的第一个字符是"{",不管对象里是否含有子的对象数组,则直接用正常的对象.class进行解释即可。
{ "name": "Google", "info": [{ "subject":"Android"}, { "tools":"Google 搜索"}, { "action":"Google 翻译"}] }
即假设上面的json串用aaa表示,其对应的对象为DataEntity, 那么只需
DataEntity datas3 = gson.fromJson(aaa, DataEntity.class);
2.如果json串的第一个字符是"[",则需要用new TypeToken<List<Bean>>(){}.getType() 进行解释。
[{ "name": "Google", "info": "Android" }, { "name": "Runoob", "info": "菜鸟教程" }, { "name": "Taobao", "info": "淘宝" }]
假设上面json串用aa表示,对应的对象为Entity,则需要
List<Entity> datas2 = gson.fromJson(aa, new TypeToken<List<Entity>>(){}.getType());
[{ "name": "Google", "info": [{ "subject":"Android"}, { "tools":"Google 搜索"}, { "action":"Google 翻译"}] }, { "name": "Runoob", "info": [{ "subject":"菜鸟教程"}, { "tools":"菜鸟工具"}, { "action":"菜鸟微信"}] }, { "name": "Taobao", "info": [{ "subject":"淘宝"}, { "tools":"网购"}] }]
类似于上面 datas2 一样使用 new TypeToken<List<Entity>>(){}.getType() 。
假设json串用a表示,对应的对象为DataBean,则为
List<DataBean> datas = gson.fromJson(a, new TypeToken<List<DataBean>>(){}.getType());
二、验证结果
1.json串为:
[{ "name": "Google", "info": [{ "subject":"Android"}, { "tools":"Google 搜索"}, { "action":"Google 翻译"}] }, { "name": "Runoob", "info": [{ "subject":"菜鸟教程"}, { "tools":"菜鸟工具"}, { "action":"菜鸟微信"}] }, { "name": "Taobao", "info": [{ "subject":"淘宝"}, { "tools":"网购"}] }]结果:
2.json串为:
[{ "name": "Google", "info": "Android" }, { "name": "Runoob", "info": "菜鸟教程" }, { "name": "Taobao", "info": "淘宝" }]结果:
3.json串为:
{ "name": "Google", "info": [{ "subject":"Android"}, { "tools":"Google 搜索"}, { "action":"Google 翻译"}] }
结果:
所以只要看json串的第一个字符就知道如何解释了。