2011-06-12 17 views
10

के साथ एक ब्लॉब लौट रहा है मैं अपने एंड्रॉइड एप्लिकेशन के लिए एक बाकी सेवा बनाने की कोशिश कर रहा हूं जहां बाहरी डेटाबेस एप्लिकेशन स्थानीय डेटाबेस में संग्रहीत करने के लिए आइटम लौटाता है। मुझे ब्लॉब्स को छोड़कर सबकुछ काम कर रहा है, जिसे शून्य के रूप में वापस किया जा रहा है।जेसन

इस

मेरी जेसन प्रतिक्रिया का एक उदाहरण है। (चित्र और थंबनेल क्षेत्रों धब्बे हैं)

{"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); 
?> 

कोई भी इस समस्या के समाधान के बारे में जानता है? मुझे पता है कि मैं यह सबसे प्रभावी तरीका नहीं कर रहा हूं (फाइल सिस्टम में छवियों को स्टोर करने के लिए बेहतर), लेकिन मुझे इसे काम करने की ज़रूरत है।

+1

कृपया पढ़ें JSON विनिर्देश की तरह एक foreach पाश को तैयार करना है। http://www.json.org/ – excanoe

+0

संभावित डुप्लिकेट [JSON और PHP के साथ BLOB का उपयोग कैसे करें?] (http://stackoverflow.com/questions/4855447/how-to-use-blob-with-json- और-php) – bzlm

उत्तर

0

ऐसा लगता है कि json_encode केवल यूटीएफ -8 एन्कोडेड डेटा के साथ काम करता है। Json_encode त्रुटि का पता लगाने के लिए आप json_last_error() का उपयोग कर सकते हैं।

19

जेएसओएन उत्पन्न करने से पहले बेस 64 के रूप में बाइनरी डेटा को एन्कोड करें।

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

आप इसे अपने एंड्रॉइड एप्लिकेशन में किसी भी बेस 64 डिकोडर के साथ डीकोड कर सकते हैं। चूंकि एपीआई स्तर 8 में util class में बनाया गया है। अन्यथा बहुत सारे बाहरी libs हैं जिनका उपयोग आप एंड्रॉइड 2.1 या इससे पहले के लक्ष्य के लिए कर सकते हैं।

2

आप base64_encode को ब्लॉब

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

फिर अनुमति प्रतीकों के बारे में इस

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);