Как я могу передать изображения в ответе сервера, используя JSON? Base64? - PullRequest
9 голосов
/ 20 февраля 2011

В моем приложении для Android я показываю некоторых пользователей в ListView.Я хочу отобразить (рис пользователя, имя, фамилия).Прямо сейчас, это работает только с first_name и last_name.Я хочу добавить картинку.Данные JSON, которые я получаю от моего сервера (python), выглядят следующим образом:

[{"profil":"first_name": "Jim", "last_name": "Carrey"}}, "_id": {"$oid": "4d595cda1d41c81536000000"}}, {"profil":{"first_name": "Mathieu", "last_name": "Polnari"}}, "_id": {"$oid": "4d5916581d41c80e88000000"}}, {"profil": {"first_name": "Vincent", "last_name": "Fatou"}}, "_id": {"$oid": "4d58fc7e1d41c8090e000000"}}...] 

Было бы лучше, если бы я добавил один параметр в этот JSON для изображения.

Как вы думаете, этохорошая идея вернуть изображение в виде строки в JSON и использовать Base64 для его декодирования?

Ответы [ 2 ]

12 голосов
/ 20 февраля 2011

Технически, это нормально - кодировать двоичные данные в виде строки base64 и включать их в JSON.

Но, как заметил @servermanfail, вам может быть выгоднее встроить ссылки на изображения в JSON и загрузить их на втором этапе.

Дополнительным преимуществом будет размер / скорость передачи, поскольку поток base64 составляет 4/3 размера исходного двоичного потока (накладные расходы 33%).

Кроме того, в этом случае вы можете кэшировать изображения.

8 голосов
/ 20 февраля 2011

Я бы предложил добавить параметр JSON, содержащий URL-адрес ресурса.

Для дополнительной безопасности вы можете создать зашифрованные URL-адреса, добавив в ресурс md5 с контрольной суммой соли, например http://server.com/images/1234567890123456789012345678901234567890/image.jpg - это метод, который использует facebook.com.

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