以json格式删除额外的方括号

时间:2016-04-13 07:57:47

标签: php json

我正在尝试从数据库中获取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);
?>

4 个答案:

答案 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.*"/>