Удалить кавычки в Json с помощью PHP
PHP формирует следующее:
[{"text":"Ток разряда 1С",
"position":"[3.5, 1.5, -3.5]",
"fontSize":"12",
"backgroundColor":"#00A6CE","textColor":"#FFFFFF"},
{"text":.....}]
Необходимо убрать кавычки вокруг квадратных скобок и чисел. Т.е., должен получиться такой результат:
[{"text":"Ток разряда 1С",
"position":[3.5, 1.5, -3.5],
"fontSize":12,
"backgroundColor":"#00A6CE","textColor":"#FFFFFF"},
{"text":.....}]
Скорее всего это как-то регулярками делается, но не соображу как. Подскажите, пожалуйста. Вот то что я написал (пока для первых квадратных скобок), Но оно не работает:
$patern = '/("position":)\"(\[.*\])(\")/iu';
$myjson = preg_replace($patern, '$1$2', $myjson);
Ответы (1 шт):
Автор решения: jimwia
→ Ссылка
Ваш вопрос не совсем понятен для меня. Если вы сами строите структуру json - то вам надо просто поменять её, и не кодировать массив position в json. Если такие данные приходят вам откуда - то со стороны, то использовать регулярки не надо, они могут удалить лишнего, или не удалить то, что надо. Лучше просто обработать данные. Например вот так:
$json = '[
{
"text":"Ток разряда 1С",
"position":"[3.5, 1.5, -3.5]",
"fontSize":"12",
"backgroundColor":"#00A6CE",
"textColor":"#FFFFFF"
},
{
"text":"Ток разряда 1С",
"position":"[3.5, 1.5, -3.5]",
"fontSize":"12",
"backgroundColor":"#00A6CE","textColor":"#FFFFFF"
}
]';
$data = json_decode($json, true);
foreach ($data as $i => $item) {
$data[$i]['position'] = json_decode($item['position']);
}