在安卓上将byte[]放入JSON

4

我需要使用JSON发送数据,并且需要使用byte[]在我的JSON中发送图片。现在,我可以使用以下代码将位图转换为字节数组:

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中?

附注:我最初尝试使用base64,但由于我需要发送和接收的图像很大,因此base64也很大,经常导致内存溢出异常!

2个回答

2

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


0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接