繁体   English   中英

在Android装置上将byte []放入JSON

[英]Putting byte[] in JSON on android

我必须使用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()中返回一个奇怪的十六进制字符串(可能是对象的内存位置)。

有人可以帮我这个忙吗? 有没有在json中放入byte []的标准方法?

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

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

没有这样的方法可以接受字节尝试,并使用类型转换将字节转换为int值

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM