【问题标题】:Parse simple string JSon in Android在 Android 中解析简单的字符串 JSON
【发布时间】:2010-09-28 17:42:04
【问题描述】:

我有以下代码:

String response = webService.webGet("");  the response of the web service

String LargeImage = new Gson().fromJson(response,String.class);

byte[] imageByteArray = Base64.decode(LargeImage);

响应类似于:“iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA...” 具有大约 400.000 个字符的 Base64 编码图像。

来自网络服务的响应非常快。当它在一段时间后(比如 20-30 秒)尝试用 Gson 解析它时,我得到一个内存不足的错误。我如何在没有 Gson 的情况下解析这个简单的字符串,它应该相当简单,但我不知道该怎么做。 请给我提意见。感谢您的宝贵时间

【问题讨论】:

    标签: android gson


    【解决方案1】:

    将您的 Base64 图像编码更改为可以直接下载图像的 URL。

    然后去获取 flexjson 2.1,你可以在 Android 上用几行轻松解析 JSON。它也比 GSON 更快。

    http://flexjson.sourceforge.net

    但从您的帖子看来,您只是通过 JSON 将 Base64 图像作为单个字符串发送。在这种情况下无需使用 JSON。除非您计划在将来围绕它包装一些元数据。

    也跳过将图像存储在数据库中。只需将其写入文件系统,并将文件路径放入链接到您的对象的数据库中。当您想知道自己下载了什么图像等时,调试起来会容易得多。

    【讨论】:

      【解决方案2】:

      响应类似于:“iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA...” 具有大约 400.000 个字符的 Base64 编码图像。

      你有在跟我开玩笑。

      请给我建议。

      找到一个合理的 Web 服务并切换到它。如果您公司的某个人编写了 Web 服务,请解雇他们。如果编写了 Web 服务,那就开除自己。我认为没有必要以 Base64 编码返回一张图片,尤其是一张巨大的图片,并用 JSON 包装。

      与此同时,您可以尝试built-in Android JSON parser 而不是 Gson。

      【讨论】:

      • 我只吃过,没写过。在这种情况下,您建议如何进行?直接下载图片?更改网络服务中的某些内容?
      • 再说一点,没必要这么辛苦。我们正在学习和体验。说它是错误的很容易,但如何使它正确则更难......我需要通过安全的方式从网站上获取一个 400x400px 的图像,并将其存储在 sqlite 表上并显示在 imageview 上。 Web 服务可以根据需要进行更改。
      • @alin:Base64+JSON 没有任何价值,而且两边都占用 CPU 时间,这在手机上尤其宝贵。它还增加了您的带宽,计量数据计划的用户非常关心这些带宽。从普通 URL 下载原始图像并将其存储在 SQLite 的 BLOB 列中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多