2016-12-20 1 views
2

로 돌아 SQL은.프로세스 내가 여기 처음 JSON API를 구축 가지고 노는거야 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이됩니다. []을 추가하면이 문제가 해결됩니다.

[{"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 출력을 구성 할 수있는 더 좋은 방법이

그래서 나는 이것에 대한 json_decode() 반환 null을하지 왜 내 질문은 추측 ?

+2

요소에') ('로 json_encode를 사용하여 수동으로 둘을 붙이지 마십시오 읽도록 권 해드립니다; PHP 객체와'json_encode()'로 전체 응답을 만드십시오. – Chris

+3

함수를 버리고 그냥'echo json_encode ($ response); '를 실행하십시오. – RiggsFolly

+0

허, 간단합니다.이 API를 빌드 할 때 참조로 사용했습니다 : https://www.leaseweb.com/labs/2015/ 10/creating-a-simple-rest-api-in-php/내가 왜 이런 방식으로 JSON을 구성하는지 궁금하다. – Nugs

답변

0

당신은 연관 배열로 다음 json_encode 전화 DB를에서 데이터를 반환 필요하고 당신은 갈 드릴 것입니다. 그것은 당신을 위해 모든 일을합니다. 당신이 볼 수 있듯이

$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가 구문 분석 할 수 맞지 않는 것을 유의 연관 배열해야하므로 DB에서로 가져 오기 json. 이것은 DB에서 BLOB를 다시 잡을 때 특히 그렇습니다.

은 정말이

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