如何将DirectoryIterator中的数组转换为有效的Json格式

时间:2014-07-31 11:25:41

标签: php arrays json

出于测试目的,我希望将数组转换为有效的Json格式。为此,我从目录中获取文件列表。这给了我结果:

{"data":["file1.txt","file2.txt","file3.txt"]}

这是我的代码:

public function getDirectories() {
    $dir = $this->getConfig(); // My Directory
    $array = array();
    $handle = opendir($dir);
    while (FALSE !== ($entry = readdir($handle))) {
        if ($entry == '.' || $entry == '..')
            continue;
        $array[] = $entry;
    }
    return $array;
}

我的班级待处理:

class ArrayValue implements JsonSerializable {

    public function __construct(array $array) {
        $this->array = $array;
    }

    public function jsonSerialize() {
        return array('data' => $this->array);
    }
}

我认为我肯定有一个json结果格式,但这似乎无效,因为我在json中有一个数组。 那么我该如何继续获得这样的格式?

{"data":{"file1.txt","file2.txt","file3.txt"}}

1 个答案:

答案 0 :(得分:0)

你第一个JSON字符串很好,因为文件的键是数字的,所以它是数组,而不是对象 为了简化一切,您可以收集所有数组

$data = [
   [
       'data' => [
           'file1.txt',
       ],
       [
           'file2.txt',
       ],

       [
           'file3.txt',
       ],
   ]
];

而不仅仅是将数组转换为JSON:

$json = json_encode($data);  // will return valid json
$array = json_decode($json); // will return parsed json