簡體   English   中英

處理SQL返回JSON

[英]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時,尤其如此。

我真的建議你閱讀這篇

http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM