我有一个PHP数据结构,我想用JSON编码。它可以包含许多空数组,其中一些需要编码为数组,一些需要编码为对象。
例如,假设我有这样的数据结构:
$foo = array(
"bar1" => array(), // Should be encoded as an object
"bar2" => array() // Should be encoded as an array
);
我想把它编码成:
{
"bar1": {},
"bar2": []
}
但是如果我使用json_encode($foo, JSON_FORCE_OBJECT)
,我将得到如下对象:
{
"bar1": {},
"bar2": {}
}
如果我使用json_encode($foo)
,我将得到如下数组:
{
"bar1": [],
"bar2": []
}
有没有什么方法可以对数据进行编码(或者定义数组),这样我就可以得到混合的数组和对象?
3条答案
按热度按时间x7rlezfr1#
将
bar1
创建为new stdClass()
对象。这将是json_encode()
区分它的唯一方法。可以通过调用new stdClass()
或使用(object)array()
对其进行强制转换来实现OR通过类型转换:
wn9m85ua2#
对于
PHP5.4+
,答案相同。再举一个简单的例子,其中有一点值得注意:
ffscu2ro3#
答案是否定的。函数无法猜测您的意图,即哪些数组应该是array,哪些应该是object。您只需在json_encoding之前将所需的数组转换为object即可