Получаю данные POST, преобразую в объект php, а затем конвертирую обратно в json-формат.
При конвертировании получаю:
"site": "https:\/\/site.ru\/"
вместо:
"site": "https://site.ru/"
Если полученные данные POST просто записать в файл, то такого эффекта нет.
<?php
// Проверка, что ключ в запросе существует и он не пустой
if (isset($_POST['json']) && $_POST['json'] != '') {
// Открываем json с данными на сервере
$json_current = file_get_contents('./data.original.json');
// Получаем данные через ajax (POST-запрос)
$json_new = $_POST['json'];
// json превращаем в объект php
$obj_new = json_decode($json_new);
$obj_current = json_decode($json_current);
// В объекте ищем id = 6, и для ключа rates обносляем значение на полученные данные POST
foreach($obj_current as $data)
if ( $data -> id == 6 ) $data -> rates = $obj_new;
$json_new = json_encode($obj_current, JSON_UNESCAPED_UNICODE);
file_put_contents('./data.json', $json_new);
// Отправка ответа с сервера в формате json
header('Content-type: application/json');
echo json_encode( 'Data update' );
}
?>