android - 在 Android 上将 byte[] 放入 JSON

标签 android json web-services bytearray out-of-memory

我必须使用 json 发送我的数据,并且必须使用我的 json 中的 byte[] 发送图像。现在我可以使用以下代码行将位图转换为字节数组:

selectedImageBitmap.compress(Bitmap.CompressFormat.JPEG, 100,stream);
byte[] byteArray = stream.toByteArray();

但是我不能把这个字节数组放在 Json 中。我正在使用 android 2.1 默认的 Json 对象。当我尝试将 byte[] 转换为 JSONArray 时,出现内存不足异常。

JSONArray jsonArray = new JSONArray();      
for(int i=0;i<byteArray.length;i++) {
    jsonArray.put(byteArray[i]);
}    

当我尝试将对象直接放入 JsonObject 时,它会在 toString() 中返回一个奇怪的十六进制字符串(可能是对象的内存位置)。

谁能帮我解决这个问题。有没有一种标准的方法可以将 byte[] 放入 json 中??

P.S:我最初尝试使用 base64。但这经常导致内存不足异常,因为我必须发送和接收的图像很大,因此 base64 也很大!

最佳答案

对于大文件/图像,尝试逐 block 发送数据。创建图像的字节数组,下次发送字节数组的小块,发送下一个 block ,依此类推。

关于android - 在 Android 上将 byte[] 放入 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473940/

相关文章:

android - 不读取 utf-8 标记

ruby-on-rails - 在 JBuilder 中生成嵌套的 JSON 数组

web-services - 正确的 yummly API 调用菜谱

android - 在哪里放置自定义数据

Android 以编程方式打印 PDF

java - android 上的外部 performClick()

java.lang.ClasscastException : java. lang.Long 无法转换为 java.lang.Double

json - LWP::UserAgent 中的 PAR::Packer 和 HTTPS

android - .net web 服务在数据开头返回 NULL 对象

android - "org.xmlpull.v1.XmlPullParserException: expected: START_TAG"错误