Возвращение blob с json

Я пытаюсь создать службу отдыха для своего приложения для Android, где внешняя база данных возвращает элементы, которые будут храниться в локальной базе данных приложений. У меня есть все, кроме blobs, которые возвращаются как null.

Это пример моего ответа Джейсона (картинки и миниатюры – это капли)

{"id":"2","user_id":"1","name":"testing","type":"bouldering","picture":null,"lat":"36","long":"81","alt":"41932","accuracy":"53","thumbnail":null} 

Вот мой PHP-скрипт для возврата данных.

 <?php require_once('config.php'); $mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); $sql = 'select * from spot_main'; $results =$mysqli->query($sql); $spots = array(); //array to parse jason from while($spot = $results->fetch_assoc()){ $spots[] = $spot; } echo json_encode($spots); ?> 

Кто-нибудь знает о решении этой проблемы? Я знаю, что я не делаю этого наиболее эффективным способом (лучше хранить изображения в файловой системе), но мне нужно, чтобы это работало.

Кодируйте двоичные данные как base64, прежде чем создавать JSON.

 $obj->picture = base64_encode($binaryData); 

Затем вы можете декодировать это в своем приложении Android с любым базовым 64-декодером. Начиная с уровня API 8, существует встроенный класс util . В противном случае существует множество внешних библиотек, которые вы можете использовать для Android 2.1 или более ранних версий.

Вы должны сделать BLOB для base64_encode

  while($spot = $results->fetch_assoc()){ $spots[] = $spot; } 

Затем подготовьте петлю foreach как это

 foreach($spots as $key=>$value){ $newArrData[$key] = $spots[$key]; $newArrData[$key]['picture'] = base64_encode($spots[$key]['picture']); $newArrData[$key]['thumbnail'] = base64_encode($spots[$key]['thumbnail']); } header('Content-type: application/json'); echo json_encode($newArrData); 

Кажется, что json_encode работает только с кодированными данными UTF-8. Вы можете использовать json_last_error () для обнаружения ошибки json_encode.