0

我有以下代码:

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 编码图像。

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

4

2 回答 2

2

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

然后去获取 flexjson 2.1,你可以很容易地在几行代码中解析 A​​ndroid 上的 JSON。它也比 GSON 快。

http://flexjson.sourceforge.net

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

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

于 2010-09-28T23:07:32.277 回答
1

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

你一定在开玩笑吧。

请给我提意见。

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

同时,您可以尝试使用内置的 Android JSON 解析器而不是 Gson。

于 2010-09-28T19:42:30.530 回答