Intereting Posts
PHPUnit, посмеянные интерфейсы и instanceof PHP – вложенный список, разбитый на четные столбцы (исправление и обновления) Как избавиться от ошибки MySQL «Подготовленная заявка должна быть переработана» Только разрешить движку приложения говорить или подключаться к вычислительному движку Когда лучше всего использовать оператор switch в PHP? Как отображать / запрашивать объект JSON с помощью Android Volley? Альтернатива для PHP_excel изменить полный заголовок для отправки почты в php array_key_exists ($ key, $ array) vs! empty ($ array ) Установить налог на продукт в наблюдателе Magento Как использовать оператор switch PHP, чтобы проверить, содержит ли строка слово (но может также содержать другие)? Динамические входы не работают Резервное копирование веб-сайта в PHP? Laravel 4 – Не удается поймать исключение базы данных в классе семян или миграции Изменить значение css с помощью php

json_decode возвращает тип строки вместо объекта

Я json_decode() JSON-кодированную строку в json_decode() и ожидаю, что ее вывод будет типом объекта, но вместо этого я получаю строковый тип. Как я могу вернуть объект?

В документах возвращается следующий объект:

 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); 

Однако, если я сначала json_encode() а затем вызовет json_decode() , вывод будет строкой, а не объектом:

 $json = json_encode('{"a":1,"b":2,"c":3,"d":4,"e":5}'); var_dump(json_decode($json)); 

Это просто упрощенный пример. На практике то, что я делаю, это подталкивание JSON-кодированной строки в PHP через AJAX. Однако это иллюстрирует проблему преобразования этой закодированной строки JSON в объект, который я могу читать в PHP, например, « $json->a ».

Как вернуть тип объекта?

спасибо за ответы! Фактическим контекстом для этого вопроса я пользовался JSON Response от API. Но когда я делаю json_decode для этого ответа и пытаюсь получить доступ к значениям типа – $ json = json_decode (json response от API); echo $ json-> a, это дает мне ошибку: объект класса stdClass не может быть преобразован в строку

Функция json_encode используется для кодирования собственного PHP-объекта или массива в формате JSON.

Например, $json = json_encode($arr) где $arr является

 $arr = array( 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, ); 

вернет строку $json = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}' . На этом этапе вам не нужно снова закодировать его с помощью json_encode !

Чтобы получить массив обратно, просто выполните json_decode($json, true) .

Если вы опустите true из вызова json_decode вы получите экземпляр stdClass с различными свойствами, указанными в строке JSON.

Дополнительные сведения см. В следующих разделах:

http://www.php.net/manual/en/function.json-encode.php

http://www.php.net/manual/en/function.json-decode.php

 var_dump(json_decode($json, true)); 

http://hk.php.net/manual/en/function.json-decode.php

Вместо того, чтобы писать в массиве JSON, попробуйте сначала поместить его в массив PHP.

 <?php $array = array( 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5 ); //Then json_encode() $json = json_encode($array); echo $json; die; ?> 

В этом случае вы используете ajax. Поэтому, когда вы получаете успех, вы можете сделать это:

 $.ajax({ url: 'example.com', data: { }, success: function(data) { console.log(data); } }); 

Где после данных внутри console.log () можно добавить json var как data.a, data.b …

Кроме того, с помощью строки, которую вы предоставили, вам не нужно json_encode, поскольку она является alrady в json формате