簡體   English   中英

無法從PHP到Android獲取JSON對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM