我有一个PHP
脚本,它通过hashmap从Android应用程序接收JSON字符串
这是名为obj
的json字符串:
{
"total": "25",
"buyer_id": "1",
"order": [
{ "id": "1", "name": "cosmo" },
{ "id": "5", "name": "Choco" },
{ "id": "22", "name": "gogo" }
]
}
这是脚本
$json = $_POST['obj'];
$data = json_decode($json,true);
//initialize the variables to the json object param
$buyer_id = $data->buyer_id;
$total = $data->total;
//insert the order in the orders table
$sql_orders = "insert into orders(buyer_id,total) values
('$buyer_id','$total')";
$res = mysqli_query($con,$sql_orders);
在我看来,json_decode不起作用,因为变量为null;当我echo
任何变量时:
echo $data.total;
输出为NULL。
答案 0 :(得分:0)
这是因为您提供true
作为json_decode()
的第二个参数;它会导致对象转换为关联数组。因此,解除引用运算符(->
)将无法在$data
上运行。您应该尝试在不指定第二个参数的情况下调用json_decode()
。
注意:如果您在JSON中使用数值,最好这样使用它们:
{
"total": 25,
"buyer_id": 1,
"order": [
{
"id": 1,
"name": "cosmo"
}, {
"id": 5,
"name": "Choco"
}, {
"id": 22,
"name": "gogo"
}
]
}
它的可读性更高。