繁体   English   中英

json_encode 成没有值的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM