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":"网购"}]
}]
结果:

Gson解释json字串

2.json串为:

[{
       "name": "Google",
       "info": "Android"
      },
      {
       "name": "Runoob",
       "info": "菜鸟教程"
      },
      {
       "name": "Taobao",
       "info": "淘宝"
      }]
结果:

Gson解释json字串

3.json串为:

{
   "name": "Google",
   "info": [{ "subject":"Android"},
   { "tools":"Google 搜索"},
   { "action":"Google 翻译"}]
 }

结果:

Gson解释json字串

所以只要看json串的第一个字符就知道如何解释了。