一起Talk Android吧(第三百五十三回:Gson库解析JSON数组一)

本文详细介绍了如何使用Gson库在Android中解析JSON数组。解析步骤包括:获取JSON字符串,创建Gson对象并指定JavaBean类型,然后调用fromJson()方法。通过示例代码展示了将JSON字符串转换为List<JsonBeanType>对象的过程,强调了泛型和TypeToken在解析过程中的作用。建议读者自行实践以加深理解。
摘要由CSDN通过智能技术生成

各位看官们,大家好,上一回中咱们说的是Android中Gson库解析JSON对象的例子,这一回中咱们介绍的例子是Gson库解析JSON数组。闲话休提,言归正转。让我们一起Talk Android吧!

使用步骤

看官们,在本章回中我们将介绍如何使用Gson库解析JSON数组,其中数组的成员全是JSON对象。下面是具体的操作步骤:

  • 1.获取JSON字符串,字符串内容为JSON数组;
  • 2.创建GSON对象,在对象的构造方法中传入JSON数组中包含的JSON对象对应的JavaBean类型; 构造方法中参数的类型由Gson库定义,我们可以通过TypeToken对象的getType()方法来获取;
  • 3.使用GSON对象的fromJson()方法获取JSON数组类型的对象;

这里所说的JSON数组类型就是List的泛型,它和创建TypeToken对象时传入的类型一致,例如:

List<JsonBeanType> beanList = 
gsonObj.fromJson(jsonArrayString,new TypeToken<List<JsonBeanType>>(){}.getType());

在此示例中的JSON数组类型就是List<JsonBeanType>.

就这样简单三步就完成了JSON对象的解析,与解析JSON对象相比,理解JSON数组类型相对难一些,因此我们通过具体的代码来演示:

示例程序

private void parseJsonByGson() {
    String jsonArrayString = 
    "[{\"id\":11,\"name\":\"jam\",\"price\":3.5,\"path\":\"a/b/c\"},{\"id\":33,\"name\":\"Nik\",\"price\":7.6,\"path\":\"e/a/k\"}]";

    Gson gsonObj = new Gson();
    List<JsonBeanType> beanList = gsonObj.fromJson(jsonArrayString,new TypeToken<List<JsonBeanType>>(){}.getType());

    Log.d(TAG, "parseJsonByGson: "+beanList.toString());
}

在上面的代码中,理解难点就是传递给fromJson方法的第二个参数。该参数的类型是Type,通过TypeToken类的getType()方法返回,这个容易理解,接下来分析创建TypeToken对象,创建此对象时使用了构造方法,而构造方法中的类型为泛型,因为JSON数组与Java中的List对象相对应,所以传入的具体类型是List的泛型(这里嵌套了两个泛型),List泛型的具体类型为JavaBean类型。为了方便大家理解,JavaBean类和上一章回的JavaBean类完全相同。

在实际中JavaBean类需要与JSON数组中的JSON对象类型保持一致。这个可以使用GsonFormat工具来生成,我们在前面章回中介绍过此工具,这里就不详细介绍了。

最后我们再介绍一下fromJson()方法的返回值,这个返回值就是JSON数据转换后的Java对象,因为JSON数组中包含了多个JSON对象,所以转换后的对象为List类型的对象,List对象中包含多个Java对象,这些Java对象的类型为JavaBean类型。代码中的JSON字符串和JavaBean类型与上一章回中的一样,不同之处在于上一章中只有一个JSON对象,这里使用了两个JSON对象,并且使用这两个JSON对象组成了JSON数组。

关于程序的运行结果这里不再列出,希望大家自已动手编译并且运行程序,这样可以加深对知识理解。特别是泛型的嵌套和TypeToken类返回的type类型。

看官们,关于Android中Gson库解析JSON数组的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值