[英]Cannot get JSON object from PHP to Android
我猜這是PHP的問題!
我在Android應用程序中使用了異步任務,並從php中獲取了JSON對象。 當我在php中編碼JSON對象並且可以將數據發送到Android時,它可以正常工作。 別擔心! 沒有錯誤!
但是我遇到的問題是,如果我在If條件或Loops中編碼JSON數組或對象,則遇到問題。
示例當我的php如下時,我能夠將json數據檢索到android中:
<?php
//Connecting to server, database and etc....
$a = array();
$a = array('mydata' => "halo");
print $json = json_encode($a);
?>
上面的代碼工作正常,我可以將json數據獲取到我的android應用中。 但是當我在if條件或循環中對json進行編碼時,我的android應用無法識別該編碼的json數據! 像這樣 :
<?php
//Connecting to server, database and etc....
$a = array();
if (mycondition) {
$a = array('mydata' => "Condition True");
print $json = json_encode($a);
} else {
$a = array('mydata' => "Condition False");
print $json = json_encode($a);
}
?>
請注意,當我使用網絡瀏覽器打開上述代碼時,它工作正常。 但是我的Android應用無法識別第二個php代碼中給出的json數據! 有什么問題? 我希望您能理解我要問的問題!
如果條件“應該”與android如何處理結果沒有任何關系。
您可能想嘗試從第二個示例中打印出完全相同的json數據,而沒有if條件來查看是否存在問題(不過,空格實際上並不是問題所在)。
您可能要檢查的另一件事是放置header('Content-Type: application/json');
在腳本的頂部!
您必須設置PHP標頭。
header('Content-Type: application/json');
不是答案,而是一個完整的例子。
<?php
//Connecting to server, database and etc....
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// setup sample data
setup($pdo);
$query = '
SELECT
id,value
FROM
soFoo
';
// processing
$data = array('a'=>array(), 'b'=>array());
foreach( $pdo->query($query, PDO::FETCH_ASSOC) as $r ) { // a loop
if ( 0==$r['id']%2 ) { // a condition
$data['a'][] = $r['value'];
}
else {
$data['b'][] = $r['value'];
}
}
// encode data and send to client
header('Content-Type: application/json');
echo json_encode($data);
/*
* creates a temporary table
* and fills it with test data
*/
function setup($pdo) {
$pdo->exec('
CREATE TEMPORARY TABLE soFoo (
id int auto_increment,
value varchar(32),
primary key (id)
)
');
$stmt = $pdo->prepare('INSERT INTO soFoo (value) VALUES (?)');
foreach(array('mary', 'the', 'had', 'quick', 'a', 'brown', 'little', 'fox', 'lamb') as $w ) {
$stmt->execute( array($w) );
}
}
版畫
{"a":["the","quick","brown","fox"],"b":["mary","had","a","little","lamb"]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.