如何json_encode PHP中的复杂数据结构?

时间:2011-05-17 00:46:26

标签: php json

我有一个数据结构,在顶层是一个字典,并包含列表。一个典型的例子可能是:

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

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

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

强制'{}'
json_encode($object, JSON_FORCE_OBJECT);

但是呈现

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

为'{“foo”:{}}',当它应为'{“foo”:[]}'时。如果我遗漏了JSON_FORCE_OBJECT,那么

array();

应该是'{}'时,

呈现为'[]'。什么是解决方案,除了放弃PHP并用一种理智的语言写这个?

1 个答案:

答案 0 :(得分:2)

遍历您的数据并用

替换所有应该是对象的数组()
$objectItem = new stdClass();

或做

$objectItem = (object)$objectItem;

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