重审Gson的Android JSON解析

前一段时间,我们托管了一篇有关使用Gson与Android进行JSON解析的文章。 该教程简单演示了如何在Android上利用Gson。

最近,来自AYDABTU开发站点的Bill Mote与我联系,并告诉我他已在自己的一个Android应用程序(即Broadcast SMS)中使用了示例代码。 更具体地说,他改进和改进了初始版本,以创建更强大的解析器。

让我们在这里对他的经历说些什么。

我当时正在编写我的第一个Android应用程序,我想让我的应用程序成为“电话之家”以完成一些任务:

1.我希望它显示每日消息(MOTD),以将相关信息告知我的客户,或者只是简单地说声谢谢您的支持,
2.我希望它提供比任何给定用户当前安装的更新版本中可用的功能列表,并为他们提供升级和升级的工具。
3.我想设置一个低水位标记以禁用较旧版本的应用程序。

JSON Web服务似乎是解决此问题的自然选择,但如上所述,“我正在编写自己的第一个Android应用程序。” ;)

我偶然发现了您用GSON解析Android JSON的文章。 多么美妙而及时的发现! 我知道本文只是为了使用户入门。 几乎所有文章都是以此方式撰写的。 我想回馈一些东西,因此,我阅读了您的原始文章,并通过强化HTTP请求和JSON的实际解析来对其进行阐述。 我还使整个事情都在AsyncTask(后台线程)中运行,以使其脱离UI线程,因为任何类型的网络故障或较大的JSON字符串都可能导致UI变得无响应并生成错误。

完整的Try / Catch代码可以在这里找到: JSON Parsing Full Try-Catch

改进之处:

*作为AsyncTask运行以使其脱离UI线程
*处理套接字/网络超时
*处理404错误 *处理JSON语法错误

注意:

  • 任何可能引发异常的东西都被try / catch块包围,并且该应用程序已构建为处理空返回值。
  • 如果应用程序应终止,则实现了onStop()方法来取消AsyncTask,因为创建多个AsyncTask会导致强制关闭。
  • 请注意,在完成doInBackground()方法之前,我们先检查了“ this.isCancelled()”,您可以通过启动应用程序并快速单击“后退”按钮来强制执行此操作。
  • 您可以抓住适当的故障(aka catch())并使应用程序在一段时间内重试,但这不在本示例的范围之内。

因此,在后台线程中运行并创建了所有级别的try / catch复杂性之后,我想到我不在乎它为什么失败了。 我只需要考虑一下。 我与一个拥有更多开发经验的朋友讨论了这一点,他同意我的基本想法:用try / catch块包装基本功能并解决这个问题,但删除所有层次。 这包括删除HTTP状态响应,因为在这种情况下我们不在乎它是否失败。 我们要么查看名称列表,要么不查看。

此代码的简化的try-catch版本以完全相同的方式工作,但是它为什么会出现问题却不太聪明。 可以在这里找到: JSON分析简化的Try-Catch

我的应用程序Broadcast SMS受益于众多在线示例和教程。 JavaCodeGeeks文章帮助我实现了运行良好的JSON字符串解析器。 非常感谢他们以及所有为大众出版作品的人们。 希望您发现我的增强功能有用。

很好,这些增强功能有助于创建一个更强大且更不易出错的应用程序。 谢谢你,比尔。 如果您还想做任何改进或补充,请给我们发送电子邮件。 干杯!

相关文章 :

翻译自: https://www.javacodegeeks.com/2011/05/android-json-gson-revisited.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值