Как заменить имя объекта в json-файле

224
18 апреля 2017, 10:24

Есть 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?

READ ALSO
Как спарсить только определённый тег (с помощью simple html dom)?

Как спарсить только определённый тег (с помощью simple html dom)?

ПриветствуюИспользую Simple HTML DOM для парсинга товаров интернет-магазина

376
Php скрипт отправки сообщения mail()

Php скрипт отправки сообщения mail()

Добрый день, можете помочь объяснить, почему после отправки сообщения, сообщение приходит со сломанной кириллицей? Правильно ли написаны...

276
вставка массива в массив [требует правки]

вставка массива в массив [требует правки]

Нужно вставить в вектор векторов еще один вектор векторов после k-той строки, но компилятор выдаёт ошибкуВот код: https://hastebin

269
QTimer не срабатывает

QTimer не срабатывает

Доброго времени суток! Написал небольшой класс и в нем QTimer, но при вызове start() приложение входит в вечный циклС моей точки зрения, все норм,...

221