[英]json_encode into object with no value
我必须输入什么才能获得具有 1 个属性但未定义值的对象?
像这样:
$data = 'test';
$object = new stdClass;
$object->$data = null;
var_dump(json_encode($postData));
给出 JSON 输出
“数据”:{“测试”:空}
但我想要的是
“数据”:{“测试”}
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.