Изменить JSON данные в PHP с помощью json_decode и json_encode. Часть 4

Изменить JSON данные в PHP с помощью json_decode и json_encode. Часть 4

При работе с JSON в PHP очень часто требуется обрабатывать переменные от сервера, например изменить пару значений и сохранить их в базе данных. Для этого используются две функции. Рассмотрим подробнее.Для начала хочу напомнить, что о json_decode и json_encode я писал ранее. Из предыдущих уроков, вы также знаете, что надо экранировать символы " и \ при передачи в строковых значениях.

Теперь разберем ситуацию, где нам с сервера приходит такой JSON ответ:

$json = '{"name":"Sergey","car":"Toyota","country":"Russia"}'; //по фигурным скобкам понимаем, что это объект
$json_str = json_decode($json); //теперь получим данные
//var_dump($json_str); //так можно посмотреть содержимое объекта
$json_str->name = 'Anton'; //изменяем параметры
$json_str->car = 'Nissan'; //изменяем параметры
var_dump($json_str); //проверяем - данные действительно изменились
$json = json_encode($json_str); //сохраняем новый JSON (рекомендую сохранять с маской JSON_UNESCAPED_UNICODE)
echo $json;

Работа с JSON и БД

Если вы хотите хранить и обрабатывать JSON в своей БД, то учтите пару моментов.

Получение JSON из БД
Каждое значение, которое выводится из БД обрабатывайте функцией: htmlspecialchars(). Пример: $obj = json_decode($podrow['getotvet']); echo htmlspecialchars($obj->name);

Запись JSON В БД
Для этого, нужно обернуть функцией mysqli_real_escape_string() не каждое значение в отдельности, а весь JSON запрос (в данном случае $pole передать на INSERT после обработки): $pole = json_encode(array("no_otvet" => "От'в'\"ет", "email" => $_POST['name']), JSON_UNESCAPED_UNICODE); $pole = mysqli_real_escape_string($pole);

 

| | Изменить JSON данные в PHP с помощью json_decode и json_encode. Часть 4 | При работе с JSON в PHP очень часто требуется обрабатывать переменные от сервера, например изменить пару значений и сохранить их в базе данных. Для эт | http://blogprogram.ru/wp-content/uploads/2017/07/725-131x131.jpg