要获得具有1个属性但值未定义的对象,我需要投入什么?
像这样:
$data = 'test';
$object = new stdClass;
$object->$data = null;
var_dump(json_encode($postData));
提供
的JSON输出“数据”:{“测试”:空}
但是我想拥有的是
“数据”:{“测试”}
答案 0 :(得分: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));
答案 1 :(得分:-1)
首先,当您将变量分配为对象的属性时,它将该变量的值作为该属性的名称。因此,“ $ object-> $ data”应为“ $ object-> data”,以将属性名称设置为数据。
第二,您正在为属性分配空值。因此,它将“ test”属性的值输出为null。
像这样更改代码,如果我没有猜错,您将获得正确的输出。
$data = 'test';
$object = new stdClass;
$object->data = $data;
var_dump(json_encode($object));