JSON_FORCE_OBJECT是一个被标记的被传递给PHP中着名的json_encode函数。
正如文件所说:
JSON_FORCE_OBJECT(integer)输出对象而不是数组 当使用非关联数组时。特别有用的时候 输出的接收者期待一个对象,并且该数组是空的。 自PHP 5.3.0起可用。
我找不到强制对开的旗帜。有什么编程方式吗?
答案 0 :(得分:1)
将对象编码为非关联数组是一种有损操作。对象属性名称/数组键丢失。这就是json_encode()
没有提供将对象编码为非关联数组的方法的原因。
从PHP 5.4开始,您的类可以实现JsonSerializable
接口。此接口(jsonSerialize()
)声明的方法由json_encode()
调用,它返回需要放入json_encode()
生成的文本表示中的对象数据。
如果您只想编码对象属性的值(没有属性名称),您可以像这样实现它:
class MyClass implements JsonSerializable
{
public function jsonSerialize()
{
return array_values((array)$this);
}
}
请注意,您无法从json_decode()
的输出中恢复对象(使用json_encode()
),因为在编码期间丢失了某些信息(属性的名称)
答案 1 :(得分:0)
最简单的选择是确保PHP中有一个简单的非关联数组。
$simple_array = array_values($associative_array);
$json = json_encode($simple_array);
unset($simple_array);