проверить строку на json php

Самый быстрый способ проверить, является ли строка JSON в PHP?

Мне нужен действительно быстрый метод проверки, является ли строка JSON или нет. Я чувствую, что это не лучший способ:

Любые энтузиасты по производительности хотят улучшить этот метод?

Функция json_last_error возвращает последнюю ошибку, json_last_error во время кодирования и декодирования JSON. Таким образом, самый быстрый способ проверить действительный JSON

Обратите внимание, что json_last_error поддерживается только в PHP> = 5.3.0.

Полная программа для проверки точной ОШИБКИ

Всегда хорошо знать точную ошибку во время разработки. Вот полная программа для проверки точной ошибки на основе документов PHP.

Тестирование с помощью действительного JSON INPUT

Действительный ВЫХОД

Тестирование с использованием недействительного JSON

Надеюсь, это полезно. Счастливое кодирование!

Использование json_decode для «зондирования» может быть не самым быстрым способом. Если это глубоко вложенная структура, то создание множества объектов массивов, чтобы просто выбросить их, является пустой тратой памяти и времени.

Таким образом, может быть быстрее использовать preg_match и регулярное выражение RFC4627, чтобы также гарантировать достоверность :

Однако недостаточно энтузиастов производительности, чтобы беспокоиться о контрольных показателях.

Все, что вам действительно нужно сделать, это …

Этот запрос не требует отдельной функции. Просто заверните is_object вокруг json_decode и перейдите. Кажется, у этого решения есть люди, которые слишком много думают об этом.

http://tr.php.net/manual/en/function.json-decode.php Возвращаемое значение равно null при обнаружении недействительной кодировки.

Вы должны подтвердить свой ввод, чтобы убедиться, что строка, которую вы передаете, не является пустой и фактически является строкой. Пустая строка недействительна JSON.

Это вернет true, если ваша строка представляет собой json-массив или объект :

Он отклоняет строки json, которые содержат только число, строку или логическое значение, хотя эти строки являются технически обоснованными json.

Это самый короткий путь, который я могу придумать.

Простой метод – проверить результат json.

Еще один простой способ

Раньше я просто проверял нулевое значение, что на самом деле было неправильным.

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

Чтобы исправить это, я сделал очень просто.

Самый простой и быстрый способ, которым я пользуюсь, следующий;

Это потому, что json_decode () возвращает NULL, если введенная строка не json или недействительна json.

Нам нужно проверить, не является ли принятая строка не числовой, потому что в этом случае json_decode не вызывает ошибки.

Я не знаю о производительности или элегантности моего решения, но это то, что я использую:

Просто пытаюсь поддаться моей таппенсе.

Расширение ответа на этот вопрос. Как насчет следующего:

Пользовательская функция

случаи

Ресурсы

Свежеприготовленная функция для совместимости с PHP 5.2, если вам нужны декодированные данные об успехе:

Простая модификация ответа хенрика, чтобы коснуться наиболее необходимых возможностей.

(включая «<> и []»)

Самый быстрый способ, возможно, декодировать возможный объект JSON для объекта / массива PHP:

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

Я думаю, что это прекрасный solutiuon, поскольку декодирование JSON без второго параметра дает объект.

ive попробовал что-то подобное

3 секунды разницы между функцией регулярного выражения и функцией json_decode native, но это происходит после 1 миллиона раз повторения, поэтому она не слишком короткая в любом случае

edit: после некоторых мыслей я предпочитаю это;

Источник

Примеры использования 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 в PHP

В этом уроке вы узнаете, как кодировать и декодировать данные JSON в PHP.

Что такое JSON

JSON расшифровывается как аббревиатура от J ava S cript O bject N otation. JSON — это стандартный текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар <ключ: значение>.

Синтаксис JSON на примерах

Объект JSON может выглядеть так:

Пример

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

Пример

PHP и JSON

Структуры данных JSON очень похожи на массивы PHP. В языке PHP существуют специальные функции для кодирования и декодирования данных JSON. Это функции json_encode() и json_decode() соответственно. Они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно. Обе функции работают только со строковыми данными в кодировке UTF-8.

Кодирование данных JSON в PHP

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

Синтаксис

Параметры

В приведенном ниже примере показано, как кодировать ассоциативный массив PHP в объект JSON:

Пример

Результат приведенного выше примера будет выглядеть так:

В следующем примере посмотрим, как будут кодироваться кириллические символы:

Пример

Результат приведенного выше примера будет выглядеть так:

Пример

Результат выполнения кода:

Точно так же вы можете закодировать индексированный массив PHP в массив JSON, например:

В следующем примере посмотрим, как будут кодироваться кириллические символы:

Пример

Результат выполнения кода:

Пример

Результат выполнения кода:

Примечание: Неассоциативный массив может быть закодирован как массив или объект. Однако ассоциативный массив всегда кодируется как объект.

Декодирование данных JSON в PHP

Функция PHP json_decode() используется для декодирования JSON в PHP. Эта функция возвращает значение, декодированное из json в соответствующий тип данных PHP.

Синтаксис

Параметры

В следующем примере показано, как декодировать или преобразовать объект JSON в объект PHP:

Пример

Результат выполнения кода:

Пример

Результат выполнения кода:

Доступ к декодированным значениям JSON в PHP

Теперь рассмотрим пример, который показывает, как декодировать данные JSON и получить доступ к отдельным элементам объекта JSON в PHP:

Пример

В этом примере показано, как получить доступ к отдельным элементам ассоциативного массива PHP:

Пример

Вы также можете перебирать декодированные данные с помощью цикла foreach(), например:

Пример

Извлечение значений из вложенных данных JSON в PHP

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

Источник

Руководство по обработке JSON в PHP

JSON расшифровывается как JavaScript Object Notation. JSON — это стандартный легкий формат обмена данными, который просто и быстро анализировать и генерировать.

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

В то время как пример JSON-массива будет выглядеть примерно так:

Формат обмена данными — это текстовый формат, который используется для обмена данными между различными платформами и операционными системами. JSON — самый популярный и легкий формат обмена данными для веб-приложений.

Парсинг JSON с помощью PHP

Структуры JSON-данных очень похожи на массивы PHP. PHP имеет встроенные функции для кодирования и декодирования данных JSON. Это функции json_encode() и json_decode() соответственно. Обе функции работают только со строковыми данными в кодировке UTF-8.

Кодирование данных JSON в PHP

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

Точно так же вы можете закодировать индексированный массив PHP в массив JSON, например:

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

Декодирование данных JSON в PHP

Расшифровать или декодировать JSON-данные так же просто, как и закодировать. Вы можете использовать PHP-функцию json_decode() для преобразования закодированной JSON-строки в соответствующий тип данных PHP. В следующем примере показано, как декодировать или преобразовать объект JSON в объект PHP.

Теперь давайте рассмотрим пример, который покажет вам, как декодировать JSON-данные и получить доступ к отдельным элементам объекта или массива JSON в PHP.

Извлечение значений из вложенных JSON-данных в PHP

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

Источник

JSON в PHP: примеры json_encode, json_decode, работа с кириллицей и utf-8

Давайте разберем, как работает JSON в PHP

Подробную документацию всегда можно найти по этой ссылке:

Кодирование при помощи функции json_encode

Функция работает только с кодировкой UTF-8.

Рассмотрим простой пример:

Результат выполнения кода:

Как видим ассоциативный массив превратился в обычную json строку.

Более сложный пример:

Результат выполнения кода:

Что произошло c кириллицей?

Дело в том, что по умолчанию многобайтовые символы Unicode кодируются как \uXXXX. При раскодировании функцией json_decode они преобразуются в нормальные строки. В некоторых случаях мы можем захотеть избежать этого экранирования, например, чтобы посмотреть как выглядит наш JSON.

Для этого воспользуемся флагом JSON_UNESCAPED_UNICODE:

Получаем такой результат:

Мы может еще в целях изучения кода преобразовать его в более человеческий вид, при помощи дополнительного флага JSON_PRETTY_PRINT

Получаем такой результат:

Мы разобрались, как кодировать наши переменные в формат JSON при помощи json_encode.

Другие предопределенные константы с префиксом JSON_ https://www.php.net/manual/ru/json.constants.php

Декодирование c помощью json_decode

Допустим у нас есть строка в формате JSON. Возьмем ее из предыдущего примера:

Давайте раскодируем ее:

У нас получился результат:

Видим, что это тип переменной stdClass. То есть несмотря на то, что мы изначально кодировали в json обычный ассоциативный массив, в результате декодирования у нас получился объект. Подробнее об этом поведении написано здесь: https://phpstack.ru/php/json_decode-kak-perevesti-rezultat-v-massiv.html

Как нам все таки получить обычный массив? Нужно в json_decode передать вторым параметром true:

Теперь мы получили обычный массив. Таким образом разобрались как работать с функцией json_decode для декодирования строки формата JSON.

Обработка ошибок

В случае ошибки, эти функции просто молча возвращают null.

Мы можем проверить, что нам вернулось null и посмотреть какая произошла ошибка следующим образом:

Иногда нам может быть полезно не молчаливо возвращать null, а выкинуть Exception и обработать его. PHP >7.3 предоставляет нам такую возможность.

Это можно сделать при помощи флага JSON_THROW_ON_ERROR

Теперь результат этого кода JsonException с сообщением Syntax error

Более подробно про обработку ошибок JSON:

Как вывести JSON ответ на ajax запрос

Когда к нашему PHP скрипту обращается например javascript с ajax запросом, для того, чтобы подгрузить на страницу новые данные, то часто возникает необходимость ответить в формате JSON.

Для того, чтобы это сделать, нужно отправить заголовок Content-type:application/json;charset=utf-8 и просто вывести строку с закодированными данными.

Содержимое файла text_json.php

Тем временем в javascript мы можем обратиться к нашему php скрипту таким образом:

Отправка JSON запросов на другой сервер.

Некоторые интернет сервисы принимает запросы в формате JSON. Давайте рассмотрим простой пример как отправить такой запрос.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *