我有以下代码:
String response = webService.webGet(""); the response of the web service
String LargeImage = new Gson().fromJson(response,String.class);
byte[] imageByteArray = Base64.decode(LargeImage);
响应如:“iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA ...”Base64编码图像,大约有400,000个字符。
Web服务的响应非常快。当它试图用Gson解析它一段时间后(比如20-30秒)我得到一个内存不足的错误。如何在没有Gson的情况下解析这个简单的字符串,它应该相当简单,但我不知道该怎么做。 请建议我。谢谢你的时间
答案 0 :(得分:2)
将Base64图像编码更改为可以直接下载图像的URL。
然后去获取flexjson 2.1,您可以在几行中轻松解析Android上的JSON。它也比GSON快。
http://flexjson.sourceforge.net
但是从您的帖子看来,您只是将Base64图像通过JSON发送为单个字符串。在这种情况下无需使用JSON。除非你计划将来在它周围包装一些元数据。
同时跳过将图像存储在DB中。只需将其写入文件系统,并将文件路径放在链接到对象的DB中。当你想知道你下载了什么图像时,更容易调试
答案 1 :(得分:1)
响应如:“iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA ...”Base64编码图像,大约有400,000个字符。
你 开玩笑吧。
请告诉我。
找到合理的Web服务并切换到它。如果贵公司的某个人编写了Web服务,请解雇他们。如果您编写了Web服务,请自行解雇。我认为没有必要返回一个图像 - 特别是那个庞大的图像 - 用Base64编码,用JSON包装。
与此同时,您可以尝试built-in Android JSON parser而不是Gson。