Как мне отформатировать мой ответ JSON в PHP, чтобы выглядеть так - PullRequest
0 голосов
/ 18 января 2011

Мой код PHP:

require ("connect.php");

$input = $_GET["query"];
$data = array();

$query = mysql_query("SELECT `abbr` FROM `states_list` WHERE `abbr` LIKE '{$input}%'") or die(mysql_error());
while ($obj = mysql_fetch_object($query)) {
    //$json = array();
    //$json['query'] = $input;
    //$json['suggestion'] = $row['abbr'];
    $json[] = $obj;
    $data = array("query"=>"$input", "suggestion"=>array($obj));
}
header("Content-type: application/json");
//echo json_encode($data);
echo '{"query":'.$input.' "suggestion":'.json_encode($json).'}';

Это мой фактический ответ:

{"query":c "suggestion":[{"abbr":"CA"},{"abbr":"CO"},{"abbr":"CT"}]}

Вот как бы я хотел, чтобы это выглядело:

{"query":c "suggestion":["CA","CO","CT"]}

Не могу понять, как правильно организовать вывод, чтобы получить то, что я хочу; (

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Попробуйте изменить $json[] = $obj; на $json[] = $obj->abbr;.

1 голос
/ 18 января 2011

Попробуйте отформатировать его так:

$query = "c";
$suggestion = array('CA', 'CO', 'CT');
$return = array('query' => $query, 'suggestion' => $suggestion);
echo json_encode($return);

Постройте $query и $suggestion в циклах.

0 голосов
/ 18 января 2011

Я бы переписал это так: цикл while создает массив, состоящий из предложений, затем кодируется.

require ("connect.php");

$input = mysql_real_escape_string($_GET["query"]);
$data = array();

$query = mysql_query("SELECT `abbr` FROM `states_list` WHERE `abbr` LIKE '{$input}%'") or die(mysql_error());
while ($obj = mysql_fetch_object($query)) {
    $data[] = $obj->abbr;
}
header("Content-type: application/json");
echo '{"query":'.$input.' "suggestion":'.json_encode($data).'}';

P.S. Кроме того, не забудьте правильно экранировать строку, взятую из пользовательского ввода, чтобы избежать SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...