Есть json-файл сохранённый в строке вида {"Org1":[{"a":1,"b":2},{...}...]} (название файла file.json)
Более наглядный вид:
{
"Org1": [
{
"a": 1,
"b": 2
},
{
"a": 12,
"b": 345
},
{
"a": 12364,
"b": -1
}
],
"Org2": [
]
}
Нужно изменить "Org1" на "Org123", не меняя порядка. Значения "Org1" и "Org123" в виде переменных "$SchoolOldName" и "$SchoolName" соответственное.
Проблема:
$file = "file.json";
$json = json_decode(file_get_contents("$file"), true);
$json = str_replace($SchoolOldName, $SchoolName, $json);
file_put_contents("$file", json_encode($json));
В таком варианте ничего не работает.
Если делать без json_decode/json_encode -- просто через file_get_contents, то всё работает, пока "Org1" не будет написано русскими символами. Тогда без json_encode название будет вида "\u0410\u0432\u0430\u043b\u043e\u043d" и str_replace не сработает.
Подскажите, пожалуйста, как перекодировать строку json в русский текст (чтобы она и осталась строкой, а не массивом)? Или же как сделать рабочий вариант замены значения с помощью json_decode?
Свежие комментарии