Веб-сервисы на основе REST сервер возвращает больше массивов, чем ожидалось - PullRequest
0 голосов
/ 22 ноября 2018

Я создаю основанные на 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...