2011-05-17 31 views
2

我有一个数据结构,在顶层是一个字典,并包含列表。典型示例可能是:如何在PHP中json_encode复杂的数据结构?

array('foo' => array(1, 2, 3), 
     'bar' => array(4, 5, 6)); 

顶级字典可能没有属性,内部列表可能为空。

这些结构需要JSON编码。问题是PHP不区分空字典和空列表,所以它不知道array()是否应该呈现为'{}'或'[]'。我可以通过做

json_encode($object, JSON_FORCE_OBJECT); 

力 '{}',但呈现

array('foo' => array()); 

为 '{ “富”:{}}',当它应该是“{ “富”:[] }”。如果我离开了JSON_FORCE_OBJECT,然后

array(); 

被渲染为 '[]',当它应该是 '{}'。有什么解决方案,除了夹住PHP和写在一个理智的语言?

回答

2

迭代通过数据并更换所有的阵列()秒,应该是对象与

$objectItem = new stdClass(); 

或做

$objectItem = (object)$objectItem; 

或者,你可以只使用对象从一开始就对这些项目而不是数组。