PHP: не удается закодировать json с несколькими строками

Я потратил пару часов, просматривая несколько похожих ответов, прежде чем опубликовать свою проблему.

Я получаю данные из таблицы в своей базе данных и хочу закодировать их в 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 каждую строку в таблице.

Мы будем очень признательны за любые предложения.

6
задан asraelarcangel 19 February 2012 в 18:52
поделиться