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

322
18 апреля 2017, 10:36

Есть JSON-файл вида:

{
'Org1': [
    {
        'a': 1
        'b': 2
    },
    {
        'a': 12
        'b': 345
    },
    {
        'a': 12364
        'b': -1
    }
],
'Org2': [
...
]
}

Как изменить только название объекта (например,'Org1' на 'Org123'), не меняя при этом его порядок и содержимое?

Answer 1

К примеру, так:

$json = '{
"Org1": [
{
    "a": 1,
    "b": 2
},
{
    "a": 12,
    "b": 345
},
{
    "a": 12364,
    "b": -1
}
],
"Org2": [
]
}';
$decoded = json_decode($json, true);
$decoded['Org123'] = $decoded['Org1'];
unset($decoded['Org1']);
$json = json_encode($decoded);
echo $json;

Порядок изменится. Если не хотите менять порядок, нужно использовать регулярные выражения или писать свой парсер JSON. К тому же, у вас невалидный JSON: пропущены запятые при перечислении и ипользуются одинарные кавычки вместо двойных.

Answer 2

С помощью регулярки так:

$str = <<<STR
{
'Org1': [
    {
        'a': 1
        'b': 2
    },
    {
        'a': 12
        'b': 345
    },
    {
        'a': 12364
        'b': -1
    }
],
STR;
$str = preg_replace("/^'Org1'/m", "Org123", $str);
READ ALSO
Не загружается фото в CURL для API

Не загружается фото в CURL для API

Пытаюсь постить картинки на стену с помощью VK APIНашел такой вот скрипт с CURL, который выполняет необходимую загрузку изображения

316
WebSockets - потоковая выдача

WebSockets - потоковая выдача

У меня есть веб-сокет сервер, основанный на Gomoob кодеЯ отсылаю сообщения этому серверу для пересылки клиентам, это файлы которые передаются...

219
Как отправить картинку POST запросом NodeJS

Как отправить картинку POST запросом NodeJS

На одном сервере имеется картинкаКак с помощью NodeJS отправить картинку на другой сервер и принять её там с средствами PHP?

392