Положить байт [] в JSON на Android - PullRequest
4 голосов
/ 12 декабря 2011

Я должен отправить свои данные с помощью json и отправить изображение с помощью byte [] в моем json.Теперь я могу получить растровое изображение для преобразования в bytearray, используя следующую строку кодов:

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

Но я не могу поместить этот байтовый массив в Json.Я использую JSON по умолчанию для Android 2.1.Когда я пытаюсь преобразовать byte [] в JSONArray, это дает мне исключение «Недостаточно памяти».

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

Когда я пытаюсь поместить объект непосредственно в JsonObject, он возвращает странную шестнадцатеричную строку в toString () (вероятно расположение объектов памяти).

Может кто-нибудь, пожалуйста, помогите мне с этим.Есть ли стандартный способ поставить байт [] в json ??

PS: я пытался использовать base64 изначально.Но это часто вызывает исключения из-за нехватки памяти, так как изображения, которые я должен отправлять и получать, большие и, следовательно, там тоже base64!

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Для больших файлов / изображений попробуйте отправить данные в виде по частям . создать байтовый массив изображения, отправить следующий фрагмент массива байтов в следующий раз, отправить следующий фрагмент и т. д.

0 голосов
/ 12 декабря 2011

нет такого метода, который принимал бы попытку байта с преобразованием байта в значение int, используя приведение типа

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