Я использую PHP на общем сервере для доступа к внешнему сайту через API, который возвращает JSON, содержащий 2 уровня данных (уровень 1: исполнитель и уровень 2: массив категорий внутри исполнителя). Я хочу преобразовать это в многомерный ассоциативный массив БЕЗ ИСПОЛЬЗОВАНИЯ функции json_decode (она использует слишком много памяти для этого использования!!!)
Пример данных JSON:
[
{
"performerId": 99999,
"name": " Any performer name",
"category": {
"categoryId": 99,
"name": "Some category name",
"eventType": "Category Event"
},
"eventType": "Performer Event",
"url": "http://www.novalidsite.com/something/performerspage.html",
"priority": 0
},
{
"performerId": 88888,
"name": " Second performer name",
"category": {
"categoryId": 88,
"name": "Second Category name",
"eventType": "Category Event 2"
},
"eventType": "Performer Event 2",
"url": "http://www.novalidsite.com/somethingelse/performerspage2.html",
"priority": 7
}
]
Я попытался использовать substr и убрать "[" и "]".
Затем выполнил вызов:
preg_match_all('/\{([^}]+)\}/', $input, $matches);
Это дает мне строку для каждой строки, НО усекается после завершающего «}» данных категории.
Как я могу вернуть ПОЛНУЮ СТРОКУ данных КАК МАССИВ, используя что-то вроде preg_split, preg_match_all и т. д. ВМЕСТО сложных вызовов, таких как json_decode, в общей строке JSON?
Как только у меня будет массив с правильной идентификацией каждой строки, Я МОГУ выполнить json_decode для этой строки, не перегружая память на общем сервере.
Для тех, кто хочет получить более подробную информацию об использовании json_decode, вызывающем ошибку:
$aryPerformersfile[ ] = file_get_contents('https://subdomain.domain.com/dir/getresults?id=1234');
$aryPerformers = $aryPerformersfile[0];
unset($aryPerformersfile);
$mytmpvar = json_decode($aryPerformers);
print_r($mytmpvar);
exit;
unset()
, или вам нужно увеличить выделение памяти в вашем приложении. - person cmorrissey   schedule 27.02.2015json_decode
используетtoo much memory
? насколько велик ваш json sring? сколько json_decode занимает в вашем случае? какой инструмент вы использовали для масштабирования использования памяти? - person Alex   schedule 27.02.2015var_dump($aryPerformers); exit();
перед json_decode? какого размера твоя струна? можно ли его включить в ваш пост? есть что-то действительно личное? - person Alex   schedule 27.02.2015