Что мне нужно вставить, чтобы получить объект с 1 свойством, но с неопределенным значением?
Вот так:
$data = 'test';
$object = new stdClass;
$object->$data = null;
var_dump(json_encode($postData));
дает JSON вывод
«Данные»: { «тест»: NULL}
но то, что я хотел бы иметь
«Данные»: { «тест»}
В 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));
Во-первых, когда вы присваиваете переменную как свойство объекта, она принимает значение этой переменной как имя этого свойства. Таким образом, «$ object -> $ data» должно быть «$ object-> data», чтобы установить имя свойства в качестве данных.
Во-вторых, вы присваиваете нулевое значение для свойства. Таким образом, он выводит значение свойства «test» как ноль.
Измените код следующим образом, и если я не угадаю, вы получите правильный вывод.
$data = 'test';
$object = new stdClass;
$object->data = $data;
var_dump(json_encode($object));