Как вложить значение словаря в массив, используя PHP с JSON_decode и JSON_encode - PullRequest
0 голосов
/ 21 июня 2020

На стороне клиента, чтобы соответствовать целому ряду сложного устаревшего кода, мне нужно JSON, чтобы он выглядел так:

A. {"book":[{"title":"War and Peace.","author":"Leo Tolstoy"}]}

, где сторона «значения» словаря представляет собой массив, содержащий словарь, например, [{}].

Однако при извлечении случайного элемента мой серверный код выводит следующее:

B. {"book":{"title":"War and Peace","author":"Leo Tolstoy"}}

, где сторона «значения» - это просто словарь, например {}.

Как я могу сгенерировать JSON, чтобы он выглядел как A вместо B?

Вот что в настоящее время происходит на сервере для генерации B: данные фактически сохраняются в JSON как:

$str = '[{"title":"War and Peace","author":"Leo Tolstoy"}]';

The code that outputs a random item is:

$array = json_decode($str, true); 
$rand = $array[array_rand($array)];
echo json_encode(array('book'=>$rand));

Как я могу поместить словарь на сторону значения внутри квадратных скобок, например, [{}]?

1 Ответ

1 голос
/ 21 июня 2020

просто заключите $rand переменную в скобки []. Любопытно узнать Зачем здесь array_rand()?

<?php 
$str = '[{"title":"War and Peace","author":"Leo Tolstoy"}]';
$array = json_decode($str, true); 
$rand = $array[array_rand($array)];
echo json_encode(array('book'=>[$rand]));
?>

ДЕМО: https://3v4l.org/dZJRn

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