Возвращает правильно отформатированный объект JSON из PHP в JS

#javascript #php #json #laravel

#javascript #php #json #laravel

Вопрос:

Я использую внешний API, который выдает мне объект JSON в качестве ответа. Я запускаю несколько вызовов API и пытаюсь добавить их в массив, а затем вернуть все это в мое приложение Vue, но по какой-то причине, при консоли.запишите это, это не отображается так, как должен отображаться объект. Это то, что я получаю…

введите описание изображения здесь

Вот вызов, который возвращает объект.

 $response = $divisionApi->addDivision(
        $request->onBoard['division'], 
        $request->onBoard['division']
);
  

Но когда я делаю это, объект, кажется, просто преобразуется в длинную строку.

 $responseArr[] = array('division' => $response);
$responseArr[] = array('merchant' => $response);
$responseArr[] = array('division' => $response);

return $responseArr;
  

Комментарии:

1. Какой ожидаемый результат здесь?

2. Ну, обычно при консоли. зарегистрируйте массив объектов в JS вы можете щелкнуть по клавишам объекта и развернуть данные, но это, похоже, превращает объект в одну целую большую строку, которая является двоюродной сестрой ключей и значений.

3. $response скорее всего, это json-строка, поэтому вам нужно декодировать данные перед добавлением их в ваш массив: json_decode($response)

4. вам нужно json_decode получить ответ json из API, а затем во время возврата вам нужно выполнить json_encode

Ответ №1:

Вам нужна json_encode() функция php. Он принимает ваш массив и преобразует в строку в формате json.

Все наоборот json_decode .

Документация: https://www.php.net/manual/en/function.json-encode.php .

Если проблема на стороне JS, вам может потребоваться преобразовать строку JSON в объект с помощью JSON.parse() документации:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse