Удалить кавычки в 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']);
}
→ Ссылка