我正在尝试从数据库中获取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);
?>
答案 0 :(得分:1)
您的PHP代码没有任何问题。
由于您在PHP中创建了一个数组数组,因此json_encode
为您提供了一组对象数组。
要查看使用print_r($your_array_variable)
的php数组的确切内容,请不要使用echo
打印数组。
更新1:
可能的原因可能是
在代码
中的某个地方另外调用json_encode()答案 1 :(得分:1)
您可以使用:
$object = json_encode($array, JSON_FORCE_OBJECT);
答案 2 :(得分:0)
只需将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];
答案 3 :(得分:0)
<input type="text" id="myText" required pattern="^GTM.*"/>