打印出json数组

时间:2013-12-21 09:05:05

标签: php json

我想弄清楚如何打印json数组。我试图从Android代码处理这个,但它无法正常工作。我相信问题在于我如何输出json。以下没有显示任何内容。脚本如下:

<?php
// Create connection
$conn=mysqli_connect("localhost","dhdkahd","dsdajdsa","dsadjsajd");
$json = array();
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

if (!$conn->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $conn->error);
}


$sql='SELECT title, description, country, city, rate FROM discounts';

$rs=$conn->query($sql);

if($rs === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {

    /*$rs->data_seek(0);
    while($row = $rs->fetch_assoc()){
        echo $row['title'] . '<br>';
    }*/

    while ( $row = $rs->fetch_assoc() )
    {
        $json[] = json_encode($row,JSON_UNESCAPED_UNICODE);
    }
}
//echo json_decode($json);
echo json_encode($json);

mysqli_close($conn);
?>

提前致谢

2 个答案:

答案 0 :(得分:2)

您只能拨打json_encode 一次。你是对所有内容进行双重编码的。

您要向数组添加数据的行必须是

    $json[] = $row;

然后,当构建阵列时,您可以在一次调用中对整个事物进行编码:

echo json_encode($json);

答案 1 :(得分:0)

你两次调用json_encode。要解决此问题,请将代码更改为:

if($rs === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {

    /*$rs->data_seek(0);
    while($row = $rs->fetch_assoc()){
        echo $row['title'] . '<br>';
    }*/

    while ( $row = $rs->fetch_assoc() )
    {
        $json[] = $row;
    }
}
//echo json_decode($json);
echo json_encode($json);

mysqli_close($conn);
?>