json_encode позволяет формировать JSON формат в PHP в виде строки. В качестве входных данных, обычно используется ассоциативный массив, что очень удобно.
Синтаксис: json_encode ($value, [$options, $depth]);
value - значение, которое будет закодировано, кроме resource. Строковые данные должны быть в UTF-8 кодировке.
options - битовая маска, которая может изменять процесс формирования JSON строки
depth - Задает максимальную глубину, которая должна быть больше 0.
Обязательным является только параметр value.
Важно замечание на счет кавычек, в ассоциативном массиве - двойные экранировать, а одинарные передавать как есть. Об этом я писал ранее. По умолчанию всегда создает объект для ассоциативного массива с ключами
Примеры
$json_data = array("id"=>100,"gorod"=>"Moscow","country"=>"Russia","phone"=>array("ZTE"," Blade")); //Это ассоциативный массив
echo json_encode($json_data);
Создаст JSON объект: {"id":100,"gorod":"Moscow","country":"Russia","phone":["ZTE"," Blade"]}
$json_data = array(1, "ivan", 'Russia', array("yandex"," management")); //Это массив
echo json_encode($json_data).'<br><br>';
Создаст JSON массив: [1,"ivan","Russia",["yandex"," management"]]
Теперь вы знаете как формировать JSON массивы и объекты.
Говоря о json_encode стоит отметить его работу с кириллицей. Если попытаться кодировать русскоязычную строку, то на выходе мы будем получать такие u041f\u0440 "кракозябры". Они могут записываться в БД и нормально декодироваться обратно в кириллицу с помощью json_decode.
Но если вы хотите порядок в БД и коде, то можете использовать маску JSON_UNESCAPED_UNICODE - она позволит нормально работать с Unicode символами.
Пример: $params = json_encode($Param, JSON_UNESCAPED_UNICODE);
Единственный минус маски - она доступно начиная с версии PHP 5.4. Поэтому пользователям старого Денвера придется переходить на Open Server. На нормальных хостингах уже давно php 5.6-7.
Снизу разместил несколько полезных масок, которые вам могут пригодиться:
- JSON_UNESCAPED_SLASHES - не экранировать символ /
- JSON_HEX_APOS - символы ' записываются в \u0027
- JSON_HEX_QUOT - символы " записываются в \u0022
- JSON_HEX_TAG - символы < и > записываются как \u003C и \u003E
- JSON_HEX_AMP - символы & записываются в \u0026
- JSON_FORCE_OBJECT - выдавать объект вместо массива при использовании не ассоциативного массива
- JSON_UNESCAPED_UNICODE - Не кодировать многобайтные символы Unicode (для нормальной работы с кириллицей)
Читайте далее о том, как получать JSON, изменять его и сохранять обратно.
Добавить комментарий