Нужно написать пару функций, одна из который рекурсивная. Одна функция отвечает за вывод директории, а другая - за вывод файла. Директорная функция вызывает саму себя для директорий и файловую функцию - для файлов. А файловая функция возвращает путь к файлу.
Ты просто выведи дерево файлов на экран без всякого json'а с помощью этих функций. Когда будет готово, увидишь, куда нужно вставить скобки, запятые и кавычки, чтобы из этого json получился.