Я создаю основанные на REST веб-службы, на сервере у меня есть служба с именем display_all_products, код выглядит так:
case 'display_all_products':
$KEY = filter_input(INPUT_GET, 'api_key');
try {
$token = JWT::decode($KEY, $secret);
$jsonProducts = getProducts();
$products = json_decode($jsonProducts, TRUE);
} catch (Exception $ex) {
return -1;
}
if($products != NULL){
echo $jsonProducts;
}else{
echo "error";
}
Функция getProducts () будет получать всю информацию о продуктах из базы данных ивернуть строку json.Когда я протестировал функцию, я получил строку json, подобную этой:
[{"product_id":1,"0":1,"product_name":"Chocolate","1":"Chocolate","price":3,"2":3,"description":"Dark chocolate","3":"Dark chocolate"},{"product_id":2,"0":2,"product_name":"Toilet tissue","1":"Toilet tissue","price":10,"2":10,"description":"Nature and Soft","3":"Nature and Soft"},{"product_id":3,"0":3,"product_name":"Rice","1":"Rice","price":5,"2":5,"description":"Basmati Rice","3":"Basmati Rice"},{"product_id":4,"0":4,"product_name":"Fruit Loaf","1":"Fruit Loaf","price":5,"2":5,"description":"Rich Fruit Bread","3":"Rich Fruit Bread"},{"product_id":5,"0":5,"product_name":"Raspberry Jam","1":"Raspberry Jam","price":6,"2":6,"description":"Full of Flavour","3":"Full of Flavour"}]
Это похоже на строку json, в этом нет ничего плохого.А также я могу получить его от клиента, что означает, что я могу сделать json_decode в приведенном выше коде.
Проблема в том, что я не могу сделать json_decode в клиенте.Когда дело доходит до клиента, я получаю строку json с сервера, например:
[{"product_id":1,"0":1,"product_name":"Chocolate","1":"Chocolate","price":3,"2":3,"description":"Dark chocolate","3":"Dark chocolate"},{"product_id":2,"0":2,"product_name":"Toilet tissue","1":"Toilet tissue","price":10,"2":10,"description":"Nature and Soft","3":"Nature and Soft"},{"product_id":3,"0":3,"product_name":"Rice","1":"Rice","price":5,"2":5,"description":"Basmati Rice","3":"Basmati Rice"},{"product_id":4,"0":4,"product_name":"Fruit Loaf","1":"Fruit Loaf","price":5,"2":5,"description":"Rich Fruit Bread","3":"Rich Fruit Bread"},{"product_id":5,"0":5,"product_name":"Raspberry Jam","1":"Raspberry Jam","price":6,"2":6,"description":"Full of Flavour","3":"Full of Flavour"}][][]
Обе строки json очень похожи, но в самом конце второй строки json есть еще две [] там.Я не кодировал дважды.Я думаю, что это причина, по которой я не могу декодировать его, но откуда взялись эти два [] и как от них избавиться.
Вот мой код для клиента:
$keyReq = "?api_key=" . $api_key . "&service=display_all_products";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $basicUrl . $keyReq);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$jsonProducts = curl_exec($ch);
curl_close($ch);
$products = json_decode($jsonProducts, TRUE);