Table of Contents
dir2json is a PHP CLI script that can be used to ouput the contents of a whole directory tree into a JSON-formatted file.
To properly understand it, let's do a quick example. Suppose we have a directory tree structure like this:
1 2 3 4 5 6 7 8 9 10 11 |
/images/ /gif/ man.gif woman.gif /jpg/ photo1.jpg photo2.jpg /png/ avatar.png howto.txt readme.md |
This would be the file generated by dir2json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "gif": [ "man.gif", "woman.gif" ], "jpg": [ "photo1.jpg", "photo2.jpg" ], "png": [ "avatar.png" ], "0": "howto.txt", "1": "readme.md" } |
As we already said, it can be very useful when working with Javascript frameworks and/or similar scenarios where you need to load/browse/show a directory structure without being allowed to access the system IO.
Conversion rules
The json conversion is handled by the native php json_encode function (available in PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7). For further info on PHP's json_encode function, read here: http://php.net/manual/en/function.json-encode.php
The generated JSON object will adopt the following conventions:
- If a folder contains only files (without subfolders), they will be listed as items of a single array.
- If a folder contains one or more subfolders, each one will be listed as a key/value array.
- If a folder contains files and subfolders, both will be listed as a key/value array: each file will have an auto-generated numeric key starting from 0 (numbers already used by a subfolder's name will be skipped).
Usage
The code it's meant to be used as a dedicated CLI script, but you can also execute it from a standard, web-hosted PHP page by populating the $argv[] array directly from code. If you need further help to implement it into a PHP page, contact me and I'll update the docs accordingly.
From CLI
1 |
php dir2json <targetFolder> <outputFile> [JSON_OPTIONS] |
JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,
JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION,
JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR
The behaviour of these constants is described on the JSON constants page in the official PHP docs:
http://php.net/manual/en/json.constants.php
Example
This example uses JSON_PRETTY_PRINT, a constant that will tell json_encode to output the JSON result in a readable way using spaces, linefeeds and indents.
1 |
php dir2json ./images out.json JSON_PRETTY_PRINT |
If you need more info, please read this article.
Download links