解析Json(杰克逊)对象数据保存

时间:2012-07-26 19:39:06

标签: android json arraylist jackson

为了获取我的应用程序的数据,我将一个带有Jackson的Json文件解析为(自定义对象列表)。当我启动我的应用程序时,我检查是否有可用的新Json文件并询问用户是否要下载它,否则我使用" old" Json文件。但每次我启动我的应用程序时,我都会解析Json。然后我使用Application Class来保存我的对象列表,在我想要的时候保存我的数据,大部分时间我只需要一个对象。

从巨大的列表中,使用多层嵌套对象,我创建了一个简单的" flat"自定义对象的arraylist,其中我只放置了创建listviews所需的数据(name,id,second text和url of picture)。点击某些内容后,我会使用该ID获取所有数据。

每次解析整个Json文件非常耗时,并且使我的应用程序的启动时间很长。当然,这很糟糕。 拥有应用程序类中保存的这个庞大的自定义对象列表会填充我的设备的大量内存,有时在一些使用后,类会被杀死,我需要再次重新分析。

有没有办法我不需要重新分析我的所有数据? 我希望这样的过程:

  • 新的Json文件
  • 首次将总JSON解析为多层自定义对象列表
  • 为listviews创建简单列表
  • 删除/清除大列表
  • 一些聪明的方法,只获得一个巨大的项目,而不是将整个列表保存在我的记忆中。 (也许与杰克逊有关)。
  • 关于破坏应用程序可能保存简单列表,我读了一些关于parceable或serializable的东西?

任何人都知道如何实现这一目标? 还是有另一个很棒的想法?

3 个答案:

答案 0 :(得分:1)

杰克逊有一个流媒体api。您也可以在AsyncTask中解析json(在后台)并在新数据准备好后更新您的用户界面

答案 1 :(得分:0)

我可能会将数据存储在SQLite数据库中,与Android平台的设计方式一致。

答案 2 :(得分:0)

作为流式传输Jackson API的替代方案(速度非常快,但仍需扫描大部分内容),也许您可​​以将内容保存在不同的文件中,每个条目一个?或者,如果有一种方法可以将事物分组,在多个文件中都有一些子集?

当然,如果你真的有大量的条目,那么使用SQLite就像Bruce建议的那样有很多意义。