Как сделать json красивым

Добавил пользователь Alex
Обновлено: 16.09.2024

Обозначение объектов JavaScript (JSON - JavaScript Object Notation) - стандартный текстовый формат для представления структурированных данных на основе синтаксиса объекта JavaScript. Он обычно используется для передачи данных в веб-приложениях (например, отправка некоторых данных с сервера клиенту,таким образом чтобы это могло отображаться на веб-странице или наоборот). Вы будете сталкиваться с этим довольно часто, поэтому в этой статье мы даём вам все, что вам нужно для работы с JSON используя JavaScript, включая парсинг JSON, чтобы вы могли получить доступ к данным внутри него при создании JSON.

Необходимые знания: Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (см. First steps и Building blocks) и основами OOJS (see Introduction to objects).
Цель: Понять, как работать с данными, хранящимися в JSON, и создавать свои собственные объекты JSON.

Нет, действительно, что такое JSON?

JSON - текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом. Несмотря на то, что он очень похож на буквенный синтаксис объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования имеют возможность читать (анализировать) и генерировать JSON.

JSON существует как строка,что необходимо при передаче данных по сети. Он должен быть преобразован в собственный объект JavaScript, если вы хотите получить доступ к данным. Это не большая проблема. JavaScript предоставляет глобальный объект JSON, который имеет методы для преобразования между ними.

Примечание: Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную), в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму).

Объект JSON может быть сохранён в собственном файле, который в основном представляет собой текстовый файл с расширением .json и MIME type application/json .

Структура JSON

Как описано выше, JSON представляет собой строку, формат которой очень похож на буквенный формат объекта JavaScript. Вы можете включать одни и те же базовые типы данных внутри JSON, так же как и в стандартном объекте JavaScript - строки, числа, массивы, булевы и другие объектные литералы. Это позволяет построить иерархию данных, к примеру, так:

Если бы мы загрузили этот объект в программу JavaScript, создали переменную с названием superHeroes , мы могли бы затем получить доступ к данным внутри неё, используя те же самые точечную и скобочную нотации, которые мы рассмотрели в статье JavaScript object basics. Например:

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

  1. Сначала у нас есть имя переменной - superHeroes .
  2. Внутри мы хотим получить доступ к свойству members , поэтому мы используем ['members'] .
  3. members содержат массив, заполненный объектами. Мы хотим получить доступ ко второму объекту внутри массива, поэтому мы используем [1] .
  4. Внутри этого объекта мы хотим получить доступ к свойству powers , поэтому мы используем ['powers'] .
  5. Внутри свойства powers находится массив, содержащий сверхспособности выбранного героя. Нам нужен третий, поэтому мы используем [2] .

Примечание. Мы сделали JSON, видимый выше, доступным внутри переменной в нашем примере JSONTest.html (см. исходный код). Попробуйте загрузить это, а затем получить доступ к данным внутри переменной через консоль JavaScript вашего браузера.

Массивы как JSON

Выше мы упоминали ,что JSON текст выглядит практически так же как и JavaScript объект,и это почти правильно.Причина,по которой мы говорим почти правильно заключается в том ,что массив также валиден JSON например:

Вышесказанное вполне справедливо для JSON. Вам просто нужно получить доступ к элементам массива (в его анализируемой версии), начиная с индекса массива, например [0]["powers"][0] .

Другие примечания

  • JSON - это чисто формат данных - он содержит только свойства, без методов.
  • JSON требует двойных кавычек, которые будут использоваться вокруг строк и имён свойств. Одиночные кавычки недействительны.
  • Даже одна неуместная запятая или двоеточие могут привести к сбою JSON-файла и не работать. Вы должны быть осторожны, чтобы проверить любые данные, которые вы пытаетесь использовать (хотя сгенерированный компьютером JSON с меньшей вероятностью включает ошибки, если программа генератора работает правильно). Вы можете проверить JSON с помощью приложения вроде JSONLint.
  • JSON может принимать форму любого типа данных, допустимого для включения в JSON, а не только массивов или объектов. Так, например, одна строка или номер будут действительным объектом JSON.
  • В отличие от кода JavaScript, в котором свойства объекта могут не заключаться в двойные кавычки, в JSON в качестве свойств могут использоваться только строки заключённые в двойные кавычки.

Активное обучение: Работа с примером JSON

Итак, давайте рассмотрим пример, чтобы показать то, как мы можем использовать некоторые данные JSON на веб-сайте.

Если коротко, то theme.json – это файл, который находится в папке с вашей темой и нужен он для конфигурации редактора Gutenberg в ней.

В этом уроке я познакомлю вас с ним и мы сразу же рассмотрим несколько примеров.

И не забывайте про мой видеокурс по созданию блока для Gutenberg с нуля.

Пример использования theme.json. Создание цветовой палитры темы

Предположим, что наша задача сегодня – это настроить произвольные палитры цветов для редактора Gutenberg.

Что-то вроде этого:

Произвольная палитра цветов Gutenberg на нашей собственной теме, состоящая из двух цветов.

Сделаем это двумя способами – сначала покажу, как мы это делали ранее, при помощи функции add_theme_support(), а потом сделаем точно то же самое в theme.json .

Сначала небольшая подготовка – создайте тему для WordPress, нам сгодится пока что супер-базовая тема, состоящая из трёх пустых файлов – style.css , index.php и functions.php .

Если вопросы с созданием тем для WordPress вызывают у вас сложности, то точно рекомендую свой видеокурс, в нём создаём тему с нуля на основе готовой HTML-вёрстки.

Реализация при помощи add_theme_support()

До появления функционала theme.json (версия WordPress 5.8), мы должны были это делать в файле functions.php при помощи add_theme_support().

Уже добавив эти строчки в functions.php , у нас получится добавить в редактор Gutenberg то, что вы видели на скриншоте выше. А для того, чтобы изменения были видны и на сайте, нам понадобится ещё и дописать CSS под эти цвета.

CSS можно пока что добавить на хук wp_head в этом тестовом примере.

Хотя да, чтобы увидеть изменения на сайте, вам понадобится немного заполнить файл index.php в нашей пустой теме, рекомендую добавить хуки wp_head() и wp_footer() и максимально базовый основной цикл.

Всё, с реализацией через add_theme_support() всё готово. Так мы и добавляли свои палитры цветов раньше.

Теперь рассмотрим вариант через theme.json .

Реализация при помощи theme.json

Если нам нужно сделать точно такую же настройку при помощи theme.json , то это будет выглядеть совсем по-другому и значительно проще:

Файл theme.json , напоминаю, находится в папке с вашей темой WordPress

Всё, больше ничего делать не нужно. Да, даже добавлять CSS! Они автоматически добавятся через wp_head() на сайт. Чтооо.

CSS-переменные

Важный момент, после того, как вы задали цвета для палитры, эти цвета станут доступны в качестве переменных CSS в формате --wp--preset--color-- , так что для нас это будут:

И эти переменные мы можем использовать в последующей настройке theme.json . Например я использовал их тут.

Настройка каждого блока отдельно (индивидуальная настройка)

Работает это таким образом, что параметр settings в json-файле принимает также и массив blocks , состоящий уже из ID блоков, а дальше уже – их настройки.

Напоминаю, что наша цель сейчас – чтобы цветовая палитра блока параграфа отличалась от глобальной, я попытался отобразить это на скриншоте:

А вот и готовый код:

Параметры settings в theme.json и их аналоги в add_theme_support()

Также хочу поделиться с вами классной таблицей различных настроек редактора Gutenberg в add_theme_support(), многие из которых кстати описаны у меня на блоге, и их эквивалентов в theme.json .

add_theme_support()theme.json
custom-line-height typography.customLineHeight в значении true .
custom-spacing spacing.customPadding в значении true .
custom-units spacing.units .
disable-custom-colors color.custom в значении false .
disable-custom-font-sizes typography.customFontSize в значении false .
disable-custom-gradients color.customGradient в значении false .
editor-color-palette color.palette .
editor-font-sizes typography.fontSizes .
editor-gradient-presets color.gradients .
experimental-link-color color.link в значении true .

В предыдущем примере мы уже поработали с color.palette , но почему бы не рассмотреть ещё один пример. Давайте помимо нашей кастомной палитры запретим выбор произвольного цвета, установив color.custom в значение false .

Вот так это будет выглядеть в файле theme.json :

Стилизация редактора

Представляете, раньше мы настраивали стили для редактора Gutenberg в отдельном CSS-файле и подключали его, но теперь можем делать это всё в theme.json ! В основном в параметре styles , но не всё.

Разберёмся с ними по порядку.

Глобальные стили

В примере ниже при помощи параметра styles я задаю глобальный цвет текста и фона для body редактора, а также размер, межстрочный интервал и семейство шрифтов.

Использование переменных – значений из палитры цветов, размеров шрифта и семейства шрифтов

Ранее я уже упоминал, что после того, как мы определяем цвет в палитре цветов, он становится доступен в качестве переменной CSS.

Это же правило работает для размеров и семейств шрифтов.

Заметили три переменных?

  • --wp--preset--color--grey – представляет цвет из палитры, по шаблону --wp--preset--color-- ,
  • --wp--preset--font-size--norma – представляет размер шрифта из предопределённых размеров, --wp--preset--font-size-- ,
  • --wp--preset--font-family--helvetica-arial – представляет шрифт.

Стилизация элементов и элементов внутри блоков

Ранее я уже говорил, что можно прописывать конфигурацию для блоков индивидуально, но когда дело доходит до параметра styles , то тут есть ещё и разделение по элементам (типо HTML-теги).

Естественно, такая строка должна включать в себя все важные свойства.

Мы могли бы реализовать преобразование следующим образом:

…Но в процессе разработки добавляются новые свойства, старые свойства переименовываются и удаляются. Обновление такого toString каждый раз может стать проблемой. Мы могли бы попытаться перебрать свойства в нём, но что, если объект сложный, и в его свойствах имеются вложенные объекты? Мы должны были бы осуществить их преобразование тоже.

К счастью, нет необходимости писать код для обработки всего этого. У задачи есть простое решение.

JSON.stringify

JSON (JavaScript Object Notation) – это общий формат для представления значений и объектов. Его описание задокументировано в стандарте RFC 4627. Первоначально он был создан для JavaScript, но многие другие языки также имеют библиотеки, которые могут работать с ним. Таким образом, JSON легко использовать для обмена данными, когда клиент использует JavaScript, а сервер написан на Ruby/PHP/Java или любом другом языке.

JavaScript предоставляет методы:

  • JSON.stringify для преобразования объектов в JSON.
  • JSON.parse для преобразования JSON обратно в объект.

Например, здесь мы преобразуем через JSON.stringify данные студента:

Метод JSON.stringify(student) берёт объект и преобразует его в строку.

Обратите внимание, что объект в формате JSON имеет несколько важных отличий от объектного литерала:

  • Строки используют двойные кавычки. Никаких одинарных кавычек или обратных кавычек в JSON. Так 'John' становится "John" .
  • Имена свойств объекта также заключаются в двойные кавычки. Это обязательно. Так age:30 становится "age":30 .

JSON.stringify может быть применён и к примитивам.

JSON поддерживает следующие типы данных:

  • Объекты
  • Массивы [ . ]
  • Примитивы:
    • строки,
    • числа,
    • логические значения true/false ,
    • null .

    JSON является независимой от языка спецификацией для данных, поэтому JSON.stringify пропускает некоторые специфические свойства объектов JavaScript.

    • Свойства-функции (методы).
    • Символьные свойства.
    • Свойства, содержащие undefined .

    Обычно это нормально. Если это не то, чего мы хотим, то скоро мы увидим, как можно настроить этот процесс.

    Самое замечательное, что вложенные объекты поддерживаются и конвертируются автоматически.

    Важное ограничение: не должно быть циклических ссылок.

    Здесь преобразование завершается неудачно из-за циклической ссылки: room.occupiedBy ссылается на meetup , и meetup.place ссылается на room :

    Исключаем и преобразуем: replacer

    Полный синтаксис JSON.stringify :

    value Значение для кодирования. replacer Массив свойств для кодирования или функция соответствия function(key, value) . space Дополнительное пространство (отступы), используемое для форматирования.

    В большинстве случаев JSON.stringify используется только с первым аргументом. Но если нам нужно настроить процесс замены, например, отфильтровать циклические ссылки, то можно использовать второй аргумент JSON.stringify .

    Если мы передадим ему массив свойств, будут закодированы только эти свойства.

    Здесь мы, наверное, слишком строги. Список свойств применяется ко всей структуре объекта. Так что внутри participants – пустые объекты, потому что name нет в списке.

    Давайте включим в список все свойства, кроме room.occupiedBy , из-за которого появляется цикличная ссылка:

    Теперь всё, кроме occupiedBy , сериализовано. Но список свойств довольно длинный.

    К счастью, в качестве replacer мы можем использовать функцию, а не массив.

    Функция будет вызываться для каждой пары (key, value) , и она должна возвращать заменённое значение, которое будет использоваться вместо исходного. Или undefined , чтобы пропустить значение.

    Обратите внимание, что функция replacer получает каждую пару ключ/значение, включая вложенные объекты и элементы массива. И она применяется рекурсивно. Значение this внутри replacer – это объект, который содержит текущее свойство.

    Идея состоит в том, чтобы дать как можно больше возможностей replacer – у него есть возможность проанализировать и заменить/пропустить даже весь объект целиком, если это необходимо.

    Форматирование: space

    Третий аргумент в JSON.stringify(value, replacer, space) – это количество пробелов, используемых для удобного форматирования.

    Ниже space = 2 указывает JavaScript отображать вложенные объекты в несколько строк с отступом в 2 пробела внутри объекта:

    Параметр space применяется для логирования и красивого вывода.

    Как и toString для преобразования строк, объект может предоставлять метод toJSON для преобразования в JSON. JSON.stringify автоматически вызывает его, если он есть.

    Как видим, date (1) стал строкой. Это потому, что все объекты типа Date имеют встроенный метод toJSON , который возвращает такую строку.

    Теперь давайте добавим собственную реализацию метода toJSON в наш объект room (2) :

    Как видите, toJSON используется как при прямом вызове JSON.stringify(room) , так и когда room вложен в другой сериализуемый объект.

    JSON.parse

    Чтобы декодировать JSON-строку, нам нужен другой метод с именем JSON.parse.

    str JSON для преобразования в объект. reviver Необязательная функция, которая будет вызываться для каждой пары (ключ, значение) и может преобразовывать значение.

    Или для вложенных объектов:

    JSON может быть настолько сложным, насколько это необходимо, объекты и массивы могут включать другие объекты и массивы. Но они должны быть в том же JSON-формате.

    Вот типичные ошибки в написанном от руки JSON (иногда приходится писать его для отладки):

    Кроме того, JSON не поддерживает комментарии. Добавление комментария в JSON делает его недействительным.

    Существует ещё один формат JSON5, который поддерживает ключи без кавычек, комментарии и т.д. Но это самостоятельная библиотека, а не спецификация языка.

    Обычный JSON настолько строг не потому, что его разработчики ленивы, а потому, что позволяет легко, надёжно и очень быстро реализовывать алгоритм кодирования и чтения.

    Использование reviver

    Представьте, что мы получили объект meetup с сервера в виде строки данных.

    …А теперь нам нужно десериализовать её, т.е. снова превратить в объект JavaScript.

    Давайте сделаем это, вызвав JSON.parse :

    Значением meetup.date является строка, а не Date объект. Как JSON.parse мог знать, что он должен был преобразовать эту строку в Date ?

    Кстати, это работает и для вложенных объектов:

    Итого

    • JSON – это формат данных, который имеет собственный независимый стандарт и библиотеки для большинства языков программирования.
    • JSON поддерживает простые объекты, массивы, строки, числа, логические значения и null .
    • JavaScript предоставляет методы JSON.stringify для сериализации в JSON и JSON.parse для чтения из JSON.
    • Оба метода поддерживают функции преобразования для интеллектуального чтения/записи.
    • Если объект имеет метод toJSON , то он вызывается через JSON.stringify .

    Задачи

    Преобразуйте объект в JSON, а затем обратно в обычный объект

    Преобразуйте user в JSON, затем прочитайте этот JSON в другую переменную.

    Существует ли (Unix) сценарий оболочки для форматирования JSON в удобочитаемой форме?

    По сути, я хочу преобразовать следующее:

    . в нечто вроде этого:

    С Python 2.6+ вы можете просто сделать:

    или, если JSON находится в файле, вы можете сделать:

    если JSON взят из интернет-источника, такого как API, вы можете использовать

    Для удобства во всех этих случаях вы можете сделать псевдоним:

    Для еще большего удобства с небольшим количеством печатания, чтобы подготовить это:

    для всех вышеперечисленных случаев. Вы можете поместить это в .bashrc , и он будет доступен каждый раз в Shell. Вызовите это как prettyjson_s '' .

    Вы можете использовать: jq

    Он очень прост в использовании и отлично работает! Он может обрабатывать очень большие структуры JSON, включая потоки. Вы можете найти Их учебники здесь .

    Или другими словами:

    Я использую аргумент "пробел" JSON.stringify , чтобы красиво печатать JSON в JavaScript.

    Из командной строки Unix с nodejs, указав в командной строке json:

    Из командной строки Unix с Node.js, указав имя файла, содержащее JSON, и используя отступ из четырех пробелов:


    Я могу быть немного предвзятым, но это потрясающий инструмент для печати и манипулирования данными JSON из командной строки. Он очень удобен в использовании и имеет обширную справку/документацию для командной строки. Это швейцарский армейский нож, которым я пользуюсь для выполнения 1001 различных небольших задач, что было бы удивительно раздражать, если бы я делал по-другому.

    Последний вариант использования: Chrome, консоль Dev, вкладка Network, экспорт всего в виде файла HAR, "cat site.har | underscore select '.url' --outfmt text | grep mydomain"; теперь у меня есть хронологически упорядоченный список всех ссылок URL, сделанных во время загрузки сайта моей компании.

    Красивая печать легко:

    То же самое, более явно:

    Этот инструмент является моим текущим страстным проектом, поэтому, если у вас есть какие-либо пожелания, есть большая вероятность, что я их рассмотрю.

    Наверняка вы когда-нибудь слышали о JSON. Что же это такое? Что он может и как его использовать?

    В данном уроке мы расскажем об основах JSON и раскроем следующие пункты:

    • Что такое JSON?
    • Для чего используется JSON?
    • Как создать строку JSON?
    • Простой пример строки JSON.
    • Сравним JSON и XML.
    • Как работать с JSON в JavaScript и PHP?

    Что такое JSON?

    JSON - простой, основанный на использовании текста, способ хранить и передавать структурированные данные. С помощью простого синтаксиса вы можете легко хранить все, что угодно, начиная от одного числа до строк, массивов и объектов, в простом тексте. Также можно связывать между собой массивы и объекты, создавая сложные структуры данных.

    JSON имеет следующие преимущества:

    • Он компактен.
    • Его предложения легко читаются и составляются как человеком, так и компьютером.
    • Его легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее)
    • Многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.

    Название JSON означает JavaScript Object Notation (представление объектов JavaScript). Как и представляет имя, он основан на способе определения объектов (очень похоже на создание ассоциативных массивов в других языках) и массивов.

    Для чего используется JSON?

    Наиболее частое распространенное использование JSON - пересылка данных от сервера к браузеру. Обычно данные JSON доставляются с помощью AJAX, который позволяет обмениваться данными браузеру и серверу без необходимости перезагружать страницу.

    1. Пользователь нажимает миниатюру продукта в онлайн магазине.
    2. JavaScript, выполняющийся на браузере, генерирует запрос AJAX к скрипту PHP, запущенному на сервере, передавая ID выбранного продукта.
    3. Скрипт PHP получает название продукта, описание, цену и другую информацию из базы данных. Затем составляет из данных строку JSON и отсылает ее браузеру.
    4. JavaScript, выполняющийся на браузере, получает строку JSON, декодирует ее и выводит информацию о продукте на странице для пользователя.

    Также можно использовать JSON для отправки данных от браузера на сервер, передавая строку JSON в качестве параметра запросов GET или POST. Но данный метод имеет меньшее распространение, так как передача данных через запросы AJAX может быть упрощена. Например, ID продукта может быть включен в адрес URL как часть запроса GET.

    Библиотека jQuery имеет несколько методов, например, getJSON() и parseJSON() , которые упрощают получение данных с помощью JSON через запросы AJAX.

    Как создать строку JSON?

    Есть несколько основных правил для создания строки JSON:

    • Строка JSON содержит либо массив значений, либо объект (ассоциативный массив пар имя/значение).
    • Массив заключается в квадратные скобки ( [ и ] ) и содержит разделенный запятой список значений.
    • Объект заключается в фигурные скобки ( < и >) и содержит разделенный запятой список пар имя/значение.
    • Пара имя/значение состоит из имени поля, заключенного в двойные кавычки, за которым следует двоеточие ( : ) и значение поля.
    • Значение в массиве или объекте может быть:
      • Числом (целым или с плавающей точкой)
      • Строкой (в двойных кавычках)
      • Логическим значением ( true или false )
      • Другим массивом (заключенным в квадратные скобки)
      • Другой объект (заключенный в фигурные скобки)
      • Значение null

      Чтобы включить двойные кавычки в строку, нужно использовать обратную косую черту: \" . Так же, как и во многих языках программирования, можно помещать управляющие символы и шестнадцатеричные коды в строку, предваряя их обратной косой чертой. Смотрите детали на сайте JSON.

      Простой пример строки JSON

      Ниже приводится пример оформления заказа в формате JSON:

      Рассмотрим строку подробно:

      • Мы создаем объект с помощью фигурных скобок ( < и >).
      • В объекте есть несколько пар имя/значение: "orderID": 12345 Свойство с именем "orderId" и целочисленным значением 12345 "shopperName": "Ваня Иванов" свойство с именем "shopperName" и строковым значением "Ваня Иванов" "shopperEmail": "johnsmith@example.com" Свойство с именем "shopperEmail" и строковым значением "ivanov@example.com" "contents": [ . ] Свойство с именем "contents" , значение которого является массивом "orderCompleted": true Свойство с именем "orderCompleted" и логическим значением true
      • В массиве "contents" есть 2 объекта, представляющие отдельные позиции в заказе. Каждый объект содержит 3 свойства: productID , productName , и quantity .

      Кстати, так как JSON основан на объявлении объектов JavaScript, то вы можете быстро и просто сделать выше приведенную строку JSON объектом JavaScript:

      Сравнение JSON и XML

      Во многих отношениях вы можете рассматривать JSON как альтернативу XML, по крайней мере, в сфере веб приложений. Концепция AJAX оригинально основывалась на использовании XML для передачи данных между сервером и браузером. Но в последние годы JSON становится все более популярным для переноса данных AJAX.

      Хотя XML является проверенной технологией, которая используется в достаточном количестве приложений, преимуществами JSON являются более компактный и простой для распознавания формат данных.

      Вот как будет выглядеть выше приведенный пример объекта на XML:

      Версия XML имеет существенно больший размер. В действительности она имеет длину 1128 символов, а вариант JSON - только 323 символа. Версию XML также достаточно трудно воспринимать.

      Конечно, это радикальный пример. И возможно создать более компактную запись XML. Но даже она будет существенно длиннее эквивалента на JSON.

      Работаем со строкой JSON в JavaScript

      JSON имеет простой формат, но создавать строку JSON вручную достаточно утомительно. Кроме того, часто нужно взять строку JSON, конвертировать ее содержание в переменную, которую можно будет использовать в коде.

      Большинство языков программирования имеют инструменты для простого преобразования переменных в строки JSON и наоборот.

      Создаем строку JSON из переменной

      JavaScript имеет встроенный метод JSON.stringify() , который берет переменную и возвращает строку JSON, представляющую ее содержание. Например, создадим объект JavaScript, который содержит сведения о заказе из нашего примера, а затем создадим из него строку JSON:

      Данный код выдаст:

      Обратите внимание, что метод JSON.stringify() возвращает строку JSON без пробелов. Ее сложнее читать, но зато она более компактна для передачи через сеть.

      Создаем переменную из строки JSON

      Существует несколько способов разобрать строку JSON в JavaScript, но самый безопасный и надежный - использовать встроенный метод JSON.parse() . Он получает строку JSON и возвращает объект или массив JavaScript, который содержит данные. Например:

      Мы создали переменную jsonString , которая содержит строку JSON нашего примера с заказом. Затем мы передаем данную строку методу JSON.parse() , который создает объект, содержащий данные JSON и сохраняет его в переменной cart . Остается только осуществить проверку, выведя свойства объекта shopperEmail и productName массива contents .

      В результате мы получим следующий вывод:

      В реальном приложении ваш JavaScript код будет получать заказ в виде строки JSON в AJAX ответе от скрипта сервера, передавать строку методу JSON.parse() , а затем использовать данные для отображения на странице пользователя.

      JSON.stringify() и JSON.parse() имеют другие возможности, такие как использование возвратных функций для пользовательской конвертации определённых данных. Такие опции очень удобны для конвертации различных данных в правильные объекты JavaScript.

      Работаем со строкой JSON в PHP

      PHP, как и JavaScript, имеет встроенные функции для работы с JSON строками.

      Создаем строку JSON из переменной PHP

      Функция json_encode() принимает переменную PHP и возвращает строку JSON, представляющую содержание переменной. Вот наш пример с заказом, написанный на PHP:

      Данный код возвращает абсолютно такую же строку JSON, как и в примере с JavaScript:

      В реальном приложении ваш скрипт PHP пришлет данную строку JSON как часть AJAX ответа браузеру, где JavaScript код с помощью метода JSON.parse() преобразует ее обратно в переменную для вывода на странице пользователя.

      Вы может передавать различные флаги в качестве второго аргумента функции json_encode() . С их помощью можно изменять принципы кодирования содержания переменных в строку JSON.

      Создаем переменную из строки JSON

      Для преобразования строки JSON в переменную PHP используется метод json_decode() . Заменим наш пример для JavaScript с методом JSON.parse() на код PHP:

      Как и для JavaScript данный код выдаст:

      По умолчанию функция json_decode() возвращает объекты JSON как объекты PHP. Существуют обобщенные объекты PHP класса stdClass . Поэтому мы используем -> для доступа к свойствам объекта в примере выше.

      Если вам нужен объект JSON в виде ассоциированного массива PHP, нужно передать true в качестве второго аргумента функции json_decode() . Например:

      Данный код выдаст такой же вывод:

      Также функции json_decode() можно передавать другие аргументы для указания глубины рекурсии и способов обработки больших целых чисел.

      Заключение

      Хотя JSON прост для понимания и использования, он является очень полезным и гибким инструментом для передачи данных между приложениями и компьютерами, особенно при использовании AJAX. Если вы планируете разрабатывать AJAX приложение, то нет сомнений, что JSON станет важнейшим инструментом в вашей мастерской.

      5 последних уроков рубрики "Разное"

      Как выбрать хороший хостинг для своего сайта?

      Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.

      Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг - это будущее Ваших сайтов

      Разработка веб-сайтов с помощью онлайн платформы Wrike

      Создание вебсайта - процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.

      20 ресурсов для прототипирования

      Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

      Топ 10 бесплатных хостингов

      Небольшая подборка провайдеров бесплатного хостинга с подробным описанием.

      Читайте также: