Tôi đã dành một vài giờ để xem qua một số câu trả lời tương tự trước khi đăng sự cố của mình.PHP: không thể mã hóa json với nhiều hàng
Tôi đang truy xuất dữ liệu từ một bảng trong cơ sở dữ liệu của mình và tôi muốn mã hóa nó thành JSON. Tuy nhiên, đầu ra của json_encode() chỉ hợp lệ khi bảng có một hàng duy nhất. Nếu có nhiều hơn một hàng, kiểm tra tại http://jsonlint.com/ sẽ trả về lỗi.
Đây là câu hỏi của tôi:
$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);
}
Đó được tôi JSON sau:
{
"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."
}
}
Khi tôi chạy thử nghiệm tại http://jsonlint.com/, nó sẽ trả về lỗi này:
Parse error on line 29:
..."No comment" }}{ "data": {
---------------------^
Expecting 'EOF', '}', ',', ']'
Tuy nhiên, nếu tôi chỉ sử dụng nửa đầu của JSON ...
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
... hoặc nếu tôi chỉ kiểm tra nửa cuối ...
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
... cùng một thử nghiệm sẽ trở về "Áp dụng JSON".
Điều tôi muốn là có thể xuất ra trong một JSON [hợp lệ] duy nhất mỗi hàng trong bảng.
Mọi đề xuất sẽ được đánh giá rất nhiều.
Cảm ơn bạn rất nhiều! Tất cả các giải pháp hoạt động, và của bạn cung cấp giải thích toàn diện nhất. Không chỉ điều này là chính xác, nhưng tôi hoàn toàn bỏ qua các ví dụ khác không đặt hàm json_encode bên ngoài vòng lặp while. Tôi xin lỗi vì không nhận thấy, và cảm ơn bạn đã dành thời gian của bạn. – asraelarcangel