2016-12-20 5 views
2

私は最初の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 ']'; 
} 

お知らせ:私は私のSQLクエリからJSONを返す以下の機能を持っています。 $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 protected]","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 protected]","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 protected]","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 protected]","user_id":4}]] 

は私がJSON出力を構築するためのより良い方法はあります?

+2

が要素上で ')(' json_encodeを使用して手動でそれらを一緒に固執しないでください読むことをお勧め。 PHPオブジェクトとしての完全なレスポンスと 'json_encode()'全体を構築してください。 – Chris

+3

関数を投げ捨てて、単に 'echo json_encode($ response);'を実行してください。 – RiggsFolly

+0

huh、simple ...私はAPIを構築するリファレンスとしてこれを使用していました:https://www.leaseweb.com/labs/2015/ 10/creating-a-simple-rest-api-in-php /私はなぜこのようにJSONを構築するのだろうか? – Nugs

答えて

0

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 }] 

あなたが見ることができるように... $データのみを連想配列である必要があり、そう

は時々自分のデータがに解析されるUTF8に適合しないことに注意して、あなたのデシベルからそれとしてフェッチjson。これは、dbからBLOBをリターンするときに特に当てはまります。

は、私は本当にあなたがこの

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

関連する問題