json_encode в объект без значения

Что мне нужно вставить, чтобы получить объект с 1 свойством, но с неопределенным значением?

Вот так:

$data = 'test';
$object = new stdClass;
$object->$data = null;
var_dump(json_encode($postData));

дает JSON вывод

«Данные»: { «тест»: NULL}

но то, что я хотел бы иметь

«Данные»: { «тест»}

-3

Решение

В JSON такого синтаксиса нет, поэтому никакая стандартная функция JSON не выдаст такой вывод.

Определение JSON является преднамеренно простым и объясняется в https://json.org; Цитировать:

JSON построен на двух структурах:

  • Коллекция пар имя / значение. На разных языках это реализовано как объект, запись, структура, словарь, хеш-таблица, список ключей или ассоциативный массив.
  • Упорядоченный список значений. В большинстве языков это реализовано как массив, вектор, список или последовательность

Таким образом, вы не можете иметь ключ без значения; но вы можете иметь значение без ключа, используя список вместо объекта:

{"data": ["test"]}

В PHP это будет создано так:

$data = 'test';
$postData = new stdClass;
$postData->data = [ $data ];
var_dump(json_encode($postData));

Или используя массив, а не stdClass объект:

$data = 'test';
$postData = [];
$postData['data'] = [ $data ];
var_dump(json_encode($postData));
3

Другие решения

Во-первых, когда вы присваиваете переменную как свойство объекта, она принимает значение этой переменной как имя этого свойства. Таким образом, «$ object -> $ data» должно быть «$ object-> data», чтобы установить имя свойства в качестве данных.

Во-вторых, вы присваиваете нулевое значение для свойства. Таким образом, он выводит значение свойства «test» как ноль.

Измените код следующим образом, и если я не угадаю, вы получите правильный вывод.

$data = 'test';
$object = new stdClass;
$object->data = $data;
var_dump(json_encode($object));
-1

По вопросам рекламы [email protected]