我正试图从数据库中获取json数据,结果中显示了一个额外的方括号。由于这个原因,我的结果出现了错误。如何从JSON结果中删除这个额外的括号。
[[{"Item_Name":"banana","Unit":"Kg","Price":0,"Discount":0},{"Item_Name":"banana","Unit":"Kg","Price":0,"Discount":0}]]
PHP代码
<?php
require_once('include/dbConnect.php');
$sql = "SELECT * FROM Items WHERE User_Id='1011'";
$r = mysqli_query($con,$sql);
//$res = mysqli_fetch_array($r);
$result = array();
while($res = mysqli_fetch_array($r, MYSQL_ASSOC)) {
array_push($result,array(
"Item_Name"=> $res['Item_Name'],
"Unit" => $res['Unit'],
"Price" => $res['Price'],
"Discount" => $res['Discount'])
);
}
echo json_encode($result);
mysqli_close($con);
?>
您的PHP代码中没有任何错误。
由于您在PHP中创建数组,因此json_encode
将为您提供对象数组。
要查看php数组的确切内容,请使用print_r($your_array_variable)
,不要使用echo
打印数组。
更新1:
可能的原因可能是
对json_encode()的另一个调用位于代码
您可以使用:
$object = json_encode($array, JSON_FORCE_OBJECT);
更新时间:
只需将echo json_encode(array($result));
替换为echo json_encode($result);
<?php require_once('include/dbConnect.php');
$sql = "SELECT * FROM Items WHERE User_Id='1011'";
$r = mysqli_query($con,$sql);
//$res = mysqli_fetch_array($r);
$result = array();
while($res = mysqli_fetch_array($r, MYSQL_ASSOC))
{
array_push($result,array( "Item_Name"=> $res['Item_Name'], "Unit" => $res['Unit'], "Price" => $res['Price'], "Discount" => $res['Discount']));
}
echo json_encode($result);
mysqli_close($con)
如果你的意思是去掉第一个和最后一个括号,我相信你只需要像数组中那样得到第一个值。
具体实现可能取决于您的编程语言。
var A = [[{"Item_Name":"banana","Unit":"Kg","Price":0,"Discount":0}, {"Item_Name":"banana","Unit":"Kg","Price":0,"Discount":0}]];
var B = A[0];
require_once('include/dbConnect.php');
$sql = "SELECT Item_Name,Unit,Price,Discount,Remaining_Count FROM Items WHERE User_Id='1011'";
$r = mysqli_query($con,$sql);
//$res = mysqli_fetch_array($r);
$result = array();
while($row = mysqli_fetch_assoc($r)) {
$result[]=$row; }
$data = json_encode($result);
print_r($data);
mysqli_close($con);