<?php
$data = '{
"systemId":4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}';
$data = str_replace('}', '', str_replace('{', '', $data));
echo '<pre>';
$t = preg_match_all("/(?<=\:)(.*?)(?=\,)/", $data, $matches);
$i=0;
foreach($matches[1] as $key => $value){
if(is_numeric($value)){
$matches[1][$i] = '"'.$value .'"';
}
$data = str_replace($value, $matches[1][$i], $data);
$i++;
}
$data = rtrim(trim($data),','); //remove last comma
$data = '{'.$data .'}';
$data = json_decode($data,true);
print_r($data);
Грязное решение, и я полностью согласен с идеей "исправить" ваш JSON, прежде чем вы получите ответ.
Если вам действительно нужно пойти по этому пути, чтобы исправить свой json внутри кода, приведенный выше код поможет вам в этом.
Причина, по которой я сначала обрезаю фигурные скобки, состоит в том, чтобы иметь более четкую строку с данными.Я объединяю их в окончательном формате, когда я сделал все, что нужно сделать.
Результат кода:
Array
(
[systemId] => 4424
[professional] => 88928
[gate] => 532
[mock] => 02
[wish] => this
[transaction_id] => eeases-323fasfse-asdfe33
[channel] => API
)
Массив, декодированный из действительного json