php json decode json stringify
(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)
json_decode — Декодирует JSON строку
Описание
Принимает закодированную в JSON строку и преобразует ее в переменную PHP.
Список параметров
json строка ( string ) для декодирования.
Эта функция работает только со строками в UTF-8 кодировке.
И хотя это надмножество согласуется с расширенным определением «JSON текста» из новых » RFC 7159 (который старается заменить собой RFC 4627) и » ECMA-404, это все равно может приводить к проблемам совместимости со старыми парсерами JSON, которые строго придерживаются RFC 4627 с кодированием скалярных значений.
Указывает глубину рекурсии.
Битовая маска опций декодирования JSON. В настоящий момент поддерживается только JSON_BIGINT_AS_STRING (по умолчанию большие целые числа приводятся к числам с плавающей запятой (float))
Возвращаемые значения
Примеры
Пример #1 Пример использования json_decode()
Результат выполнения данного примера:
Пример #2 Доступ к свойствам объектов с неправильными именами
Доступ к элементам объекта, которые содержат символы недопустимые согласно соглашению об именах PHP (т.е. дефис), может производиться путем обрамления имени элемента фигурными скобками и апострофами.
Пример #3 Распространенная ошибка при использовании json_decode()
// Следующие строки являются валидным кодом JavaScript, но не валидными JSON данными
Пример #4 Ошибки с глубиной вложенных объектов ( depth )
Результат выполнения данного примера:
Пример #5 json_decode() с большими целыми числами
Результат выполнения данного примера:
Примечания
Спецификация JSON не тоже самое, что и JavaScript, но является его частью.
В случае ошибки декодирования можно использовать json_last_error() для определения ее причины.
Список изменений
Смотрите также
5 малоизвестных возможностей JSON.stringify()
Доброго времени суток, друзья!
В этой небольшой заметке я хочу рассказать вам о некоторых редко используемых возможностях JSON.stringify(). Возможно, они окажутся вам полезными.
JSON.stringify() часто используется при отладке для преобразования объекта или обычной строки в строку в формате JSON. Но как данный метод используется, и можем ли мы обойтись toString()? Давайте попробуем это сделать.
[object Object] — это не совсем то, что мы хотели увидеть, не правда ли?
Не спрашивайте, зачем мы вообще используем toString(). Предположим, что нам жизненно необходимо перевести объект в строку.
Теперь попробуем использовать JSON.stringify():
Мы сделали это, Карл!
Однако возможности JSON.stringify() этим не исчерпываются.
1. Использование массива в качестве второго аргумента
Вы не ослышались, функция stringify может иметь второй аргумент. Этим аргументом является массив ключей объекта, который мы хотим отобразить в консоли. Допустим, у нас есть такой массив объектов:
… и мы хотим увидеть, кто из пользователей является админом (у админа есть свойство «access»).
Если мы используем console.log(JSON.stringify(users)), то получим следующее:
Согласитесь, не очень читабельно.
Теперь попробуем сделать следующее:
Справедливости ради надо отметить, что в данном случае мы могли бы использовать console.table(users):
… но мы говорим о JSON.stringify(), поэтому не отвлекаемся. Пример не очень хороший, но, думаю, идея понятна.
2. Использование функции в качестве второго аргумента
Функция в качестве второго аргумента stringify оценивает каждую пару ключ-значение согласно логике данной функции. Если мы возвращаем undefined, то соответствующая пара ключ-значение не отображается. Пример:
3. Использование числа в качестве третьего параметра
Третий аргумент отвечает за пробелы. Если таким аргументом является число, то каждый уровень строки будет иметь соответствующий отступ:
4. Использование строки в качестве третьего аргумента
Если третьим параметром является строка, то вместо пробелов будут использованы символы этой строки:
json stringify to php
I want to pass the key values into php page.
But it not working.
It gotta do with syntax/way I am passing in causing error.
6 Answers 6
If you are not using dataType : ‘json’, you might need to do stripslashes
in your php code for accessing the record
Hope it will help someone!
I’m going to take a guess and say that you SHOULDN’T stringify anything. I believe JQuery will do that for you. Namely, no person = JSON.stringify(person). Give that a try.
JQuery
If you want objects to be converted into associative arrays, then add true into function:
I have not worked with PHP but from my experience with ASP.net following may help you.
Add contentType key to ajax settigns:
also I think you need to stringify whole value you are assigning to data like this:
Not the answer you’re looking for? Browse other questions tagged php jquery json or ask your own question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.17.40238
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Примеры использования JSON-формата на PHP и JavaScript
Что такое JSON
Синтаксис JSON на примерах
Формат json обычно записывается в 2-х вариантах:
1. Последовательность значений. Например, последовательность 10, 15 и «test» в формате JSON будут выглядеть так:
Немного более сложный пример:
PHP функции для работы с JSON-форматом
В языке php начиная с версии 5.2. есть всего 4 функции:
В основном по-большей части, используются всего две функции: json_encode и json_decode. Не буду вдаваться в подробности их синтаксиса, подробнее можете посмотреть на php.net. Пример использования:
Обратите внимание : при кодировании в JSON-формат данных на русском языке, функция json_encode преобразует русские символы в юникод, т.е. заменяет их на \uXXXX и таким образом, json-строка становится не читабельной для человека (но понятной для браузера). Если нужно, чтобы преобразования в юникод не происходило (например, при отладке кода), можно просто использовать опцию JSON_UNESCAPED_UNICODE.
Так же, чтобы при кодировании не добавлялись слэши для экранирования и чтобы строки с числами кодировались как числа, можно использовать JSON_UNESCAPED_SLASHES и JSON_NUMERIC_CHECK. В итоге, чтобы json-строка была читабельной для человека, сделаем, например, так:
Без использования этих опций строка была бы такой:
а с использованием опций, получим читабельную строку:
Еще один момент: если нужно чтобы при декодировании json-строки функция json_decode возвращала именно массив, просто добавьте второй параметр в функцию равный true.
На этом рассмотрение php-функций завершу.
JavaScript функции для работы с JSON-форматом
Начнем с того, что JSON-формат, изначально был придуман для языка JavaScript и потом стал просто отдельным текстовым форматом, используемым в разных языках. Видимо, поэтому синтаксис JSON очень похож на синтаксис записи обычных объектов и массивов.
Функции JavaScript, используемые для преобразования в JSON-формат и обратно:
Простой пример декодирования json-строки в массив с цифрами:
Пример преобразования (сериализации) объекта в JSON-строку:
При сериализации (преобразовании) объекта в JSON-строку, вызывается метод toJSON этого объекта, если он существует. Если метода нет, тогда перечисляются все свойства объекта. Пример преобразования объекта с методом toJSON:
Обе функции JSON.parse и JSON.stringify имеют доп.параметры для уточнения правил преобразований. Не буду останавливаться на них в рамках этой статьи. Если необходимо, о них можно почитать, например, здесь: https://learn.javascript.ru/json.
Примеры практического применения JSON-формата
Собственно, лично я, применяю формат JSON в 2-х основных ситуациях:
1. Передача данных между браузером и сервером с использованием Ajax-запросов.
Например, у нас есть какая-то страница, на которой нужно обновить данные без перезагрузки страницы. Допустим, нужно чтобы с сервера «подгрузилась» информация со списком сотрудников и их данными.
В JavaScript с помощью jQuery делаем простой ajax-запрос к серверу и выводим данные в виде таблицы в браузер:
На сервере скрипт get-info.php к которому делается ajax-запрос, может быть, например, таким:
В этом примере JSON-строка, которая была передана с сервера в браузер была такой:
Я специально не стал показывать строку в виде «дерева», т.к. она передается именно в таком виде. И как вы можете оценить, запись данных в формате JSON получилась очень компактной, а это значит, что передача этих данных от сервера к браузеру будет практически мгновенной.
2. Запись сложных структур данных в базу данных.
Иногда бывают ситуации, когда заводить еще одну таблицу в базе данных не целесообразно, чтобы сохранить различные данные. Допустим, предположим, у зарегистрированного на сайте пользователя есть возможность сделать настройку цвета фона и цвета текста.
Вместо того, чтобы заводить еще одну таблицу ради 2-х настроек, можно просто в таблице со списком пользователей сделать текстовый столбец, в который помещать данные настроек пользователя. Тогда запрос обновления настроек, может например, быть таким:
В формате JSON, можно так же, например, записать в базу данных какие опции товаров выбрал покупатель.
Впринципе, можно даже и всё содержимое корзины записать в формате JSON, например, так:
В обычном не древовидном виде эта JSON-строка будет такой:
Таким образом, как видно из примеров, в формате JSON можно хранить и передавать практически любую информацию.
json_decode
(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL json >= 1.2.0)
json_decode — Декодирует строку JSON
Описание
Принимает закодированную в JSON строку и преобразует её в переменную PHP.
Список параметров
Строка ( string ) json для декодирования.
Эта функция работает только со строками в кодировке UTF-8.
PHP реализует надмножество JSON, который описан в первоначальном » RFC 7159.
Максимальная глубина вложенности структуры, для которой будет производиться декодирование.
Возвращаемые значения
Список изменений
Примеры
Пример #1 Примеры использования json_decode()
Результат выполнения данного примера:
Пример #2 Доступ к свойствам объектов с неправильными именами
Доступ к элементам объекта, которые содержат символы, недопустимые в соответствии с соглашением об именах PHP (то есть дефис), может быть выполнен путём обрамления имени элемента фигурными скобками и апострофами.
Пример #3 Распространённая ошибка при использовании json_decode()
// Следующие строки являются валидным кодом JavaScript, но не валидными JSON-данными
Пример #4 Ошибки с глубиной вложенных объектов ( depth )
Результат выполнения данного примера:
Пример #5 json_decode() с большими целыми числами
Результат выполнения данного примера:
Примечания
В случае возникновения ошибки декодирования можно использовать json_last_error() для определения её причины.