Как преобразовать строку в формат JSON - PullRequest
0 голосов
/ 06 мая 2020

Мне трудно преобразовать строку, которую я извлекаю из БД.

$ test = '{1: 1,2: 4}';

Сначала строка json искажен из-за того, что ключ не находится в строке. Но как я могу преобразовать ключ в строку, а затем скрыть его в объект JSON?

Ответы [ 3 ]

0 голосов
/ 06 мая 2020

String $ test имеет неправильный формат json. Требуются ключи строкового типа. Если ваш $ test - это просто объект, у него есть ключ, а значение - это все числа. Вы можете его переформатировать.

$test = '{1:1,2:4}';
$formatKeyValues= substr($test, 1, -1);
$keys= [];
$values= [];

 foreach(explode(",", $formatKeyValues) as $atribute) {
     //php 7.2 above
     [$key, $value] = explode(":", $atribute);
     $keys[]= $key;
     $values[]= (int)$value;
 };

$jsonfromatted = json_encode(array_combine($keys, $values));
$object = json_decode($jsonfromatted);
var_dump($object);
0 голосов
/ 06 мая 2020

Вы можете преобразовать с помощью регулярного выражения.

$json = preg_replace("/(\d+):/", '"$1"', $test);

Подробнее о preg_replace ()

0 голосов
/ 06 мая 2020

Формат выглядит как сгенерированный функцией Php serialize (). Попробуйте unserialize ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...