Я потратил пару часов, просматривая несколько похожих ответов, прежде чем опубликовать свою проблему.
Я получаю данные из таблицы в своей базе данных и хочу закодировать их в JSON. Однако вывод json_encode () действителен только тогда, когда таблица имеет одну единственную строку. Если строк несколько, тест на http://jsonlint.com/ вернет ошибку.
Это мой запрос:
$result = mysql_query($query);
$rows = array();
//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
$rows['data'] = $r;
//echo result as json
echo json_encode($rows);
}
В результате я получаю следующий JSON:
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
Когда я запускаю тест на http://jsonlint.com/ , он возвращает эту ошибку:
Parse error on line 29:
..."No comment" }}{ "data": {
---------------------^
Expecting 'EOF', '}', ',', ']'
Однако, если я использую только эту первую половину JSON ...
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
... или если я тестирую только вторую половину ...
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
... тот же тест вернет "Valid JSON".
Я хочу иметь возможность выводить в одном единственном [действительном] JSON каждую строку в таблице.
Мы будем очень признательны за любые предложения.