[英]Process SQL return into JSON
我正在這里構建我的第一個JSON API。 我有以下從我的SQL查詢返回JSON的函數:
function processResponse($response)
{
// if (!$key) echo '[';
for ($i=0;$i<count($response);$i++) {
echo ($i>0?',':'').json_encode($response);
}
// if (!$key) echo ']';
}
注意,當我注意到多個(不必要的)嵌套數組時,我已經注釋了[ ]
括號。 這允許這樣的事情: $json[0]->email;
否則,它將是一個嵌套數組,我需要執行類似$json[0][0]->email;
但是,當我在處理后的輸出上執行json_decode()
,會得到一個null。 添加[]
返回可解決此問題。
所以我想我的問題是為什么json_decode()
為此返回null
:
[{"inventory_id":7,"start":null,"expiration":null,"created":"2016-12-05 10:58:23","updated":"2016-12-08 15:29:56","item_name":"Tour Ticket (Per Person)","default_rate":null,"quantity":5,"bookings_count":"6","itinerary_count":"8","group_name":"Winery","location_name":"Location 1","status":"Active","type_name":"Tour","username":"email@address.com","user_id":4},{"inventory_id":20,"start":null,"expiration":null,"created":"2016-12-06 12:33:18","updated":"2016-12-08 15:41:12","item_name":"Tasting Ticket","default_rate":null,"quantity":10,"bookings_count":"0","itinerary_count":"0","group_name":"Winery","location_name":"Location 1","status":"Archived","type_name":"Ticket","username":"email@address.com","user_id":4}]
以及為什么這樣做:
[[{"inventory_id":7,"start":null,"expiration":null,"created":"2016-12-05 10:58:23","updated":"2016-12-08 15:29:56","item_name":"Tour Ticket (Per Person)","default_rate":null,"quantity":5,"bookings_count":"6","itinerary_count":"8","group_name":"Winery","location_name":"Location 1","status":"Active","type_name":"Tour","username":"email@address.com","user_id":4},{"inventory_id":20,"start":null,"expiration":null,"created":"2016-12-06 12:33:18","updated":"2016-12-08 15:41:12","item_name":"Tasting Ticket","default_rate":null,"quantity":10,"bookings_count":"0","itinerary_count":"0","group_name":"Winery","location_name":"Location 1","status":"Archived","type_name":"Ticket","username":"email@address.com","user_id":4}]]
有沒有更好的方法讓我構造JSON輸出?
您只需要從db作為關聯數組返回數據,然后調用json_encode
,您就會很高興。 它為您完成所有工作。
$data = ["name" => "john doe", "age" : 33];
print json_enconde($data); // {"name" : "john doe", "age": 33 }
$data = [
["name" => "john doe", "age" : 33],
["name" => "mary doe", "age" : 28]
];
print json_enconde($data); // [{"name" : "john doe", "age": 33 }, {"name" : "mary doe", "age": 28 }]
如您所見... $ data只需要是一個關聯數組,因此可以從數據庫中獲取它
請注意,有時您的數據不適合將UTF8解析為json。 當您從數據庫中調整Blob時,尤其如此。
我真的建議你閱讀這篇
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.